Я добавил раздел реестра, но не могу найти его программно

Поэтому я использовал RegEdit, чтобы добавить в реестр на рабочей станции следующее:

HKLM\Software\Foo\Bar

Панель имеет пару «wtf »/« idk». Я подтвердил, что эти изменения «приняли», закрыв regedit и вновь открыв его. Эй, они все еще там! Разбухать.

RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Foo\Bar");

if (key != null)
{
    var = key.GetValue("wtf").ToString();
}

Проблема в том, что ключ имеет значение null.

Когда..

Registry.LocalMachine.OpenSubKey("Software").GetSubKeyNames()

Вызывается, но Foo не появляется среди множества SubKeyNames.

Так что я, очевидно, упускаю что-то глупое. Что конкретно у меня отсутствует?

-121--1547798-

Клавиши со стрелками не работают после программной установки ListView.SelectedItem У меня есть элемент управления WPF ListView, ItureSource имеет значение IColllView, созданный таким образом: var collenseView = SystemSource это....

У меня есть элемент управления WPF ListView, ItureSource устанавливается в ICollableView, созданный таким образом:

var collectionView = 
  System.Windows.Data.CollectionViewSource.GetDefaultView(observableCollection);
this.listView1.ItemsSource = collectionView;

... где observableCollection является коллекцией ObservableCollection сложного типа. ListView настроен на отображение для каждого предмета только одного строкового свойства сложного типа.

Пользователь может обновить ListView, в этот пункт моя логика хранит «строку ключа» для выбранного в данный момент предмета, повторно заполняет базовую наблюдательную коллекцию. Предыдущая сортировка и фильтр затем применяются к коллекции View. В этот момент я хотел бы «выбрать» предмет, который был выбран до запроса на обновление. Предметы в observableCollection являются новыми экземплярами, поэтому я сравниваю соответствующие свойства последовательности, а затем просто выбираю один из них. Вот так:

private void SelectThisItem(string value)
{
    foreach (var item in collectionView) // for the ListView in question
    {
        var thing = item as MyComplexType;
        if (thing.StringProperty == value)
        {
            this.listView1.SelectedItem = thing;
            return;
        }
    }
}

Это все работает . Если выбран четвертый предмет и пользователь нажимает F5, список восстанавливается, а затем выбирается предмет с тем же свойством последовательности, что и предыдущий четвертый предмет. Иногда это новый 4-й пункт, иногда нет, но он обеспечивает « наименьшее удивительное поведение ».

Проблема возникает, когда пользователь впоследствии использует клавиши со стрелками для навигации по ListView. Первая стрелка вверх или вниз после обновления приводит к выбору первого предмета в (новом) listview независимо от того, какой предмет был выбран предыдущей логикой. Любые другие клавиши со стрелками работают так, как ожидалось.

Почему это происходит?

Это довольно явно нарушает правило «наименьшего изумления». Как избежать этого?


EDIT
При дальнейшем поиске это похоже на ту же аномалию, что описывалась неотвеченной навигацией
WPF ListView и проблемой нажатия клавиши , за исключением того, что я предоставляю более подробную информацию.

10
задан Community 23 May 2017 в 12:16
поделиться