выделение элемента списка Silverlight 3 по сравнению с выбранным - PullRequest
1 голос
/ 20 апреля 2010

У меня есть список, и я пытаюсь выбрать и добавить код. Иногда выделяется один элемент, т. Е. Его фон окрашен в синий цвет, но другой элемент имеет квадратную синюю рамку вокруг него (без выделения только полый контур поля).

Правильно ли я сказал, что кто-то "выделен", а кто-то "выбран" и правильно ли они определены?

Должно ли это происходить ... что эти две вещи не синхронизированы?

Спасибо Cody

Ответы [ 2 ]

1 голос
/ 24 мая 2010

Только что боролся с этим вопросом. Хотя средство просмотра прокрутки списка также автоматически прокручивает выбранный элемент в списке, первый элемент будет иметь фокус, и, когда вы будете распознавать взаимодействие с клавиатурой, он будет работать с первым элементом в списке, а не с выбранным элементом.

Для нас исправление было

            this.MyListBox.UpdateLayout(); 
            this.MyListBox.Focus();
            this.MyListBox.SelectedItem = MyObject;
            this.MyListBox.ScrollIntoView(this.MyListBox.SelectedItem);

Порядок действий кажется очень важным.

Это было использование внутреннего прокрутки ListBox.

0 голосов
/ 20 апреля 2010

Элементом с выделенным синим фоном является SelectedItem. Элемент с синим прямоугольником - это элемент, который в данный момент считает, что он имеет фокус.

Обычно прямоугольник фокуса выбранной заливки находится вместе, потому что выбранный элемент обычно изменяется щелчком мыши, что также приводит к фокусировке на том же элементе. Однако возможно, например, что код может изменить выбранный элемент, в то время как ListBox все еще имеет фокус. В этом случае выбранное выделение переместит вновь выбранный элемент, но прямоугольник фокуса останется там, где он есть. (Обратите внимание, что я описываю то, что кажется пользователю, а не то, как на самом деле все работает под капотом).

Чтобы понять, что происходит, см. Стиль ListBoxItem в документации Стили и шаблоны ListBox .

...