Привязка WPF ListBox, когда IsSynchronizedWithCurrentItem = true - PullRequest
3 голосов
/ 30 июня 2011
<ListBox HorizontalAlignment="Right" 
   ItemsSource="{Binding Groups}" 
   SelectedValue="{Binding SelectedGroup}"/>

При запуске, перед отображением экрана, моя модель просмотра имела SelectedGroup = Groups.First() (а в группах было несколько элементов).

Я потратил около часа, пытаясь выяснить, почему мой элемент не был выбран.,Когда я щелкнул (или нажал пробел), выбранный элемент оказался выбранным, но до этого элемент не отображался выбранным.

После добавления <ListBox IsSynchronizedWithCurrentItem ="True"> приложение начало работать.

Вопрос: Может кто-нибудь объяснить, почему это необходимо?Другими словами, почему Microsoft даже сделала это возможным?Разве я не всегда хотел бы такого поведения?

Ответы [ 2 ]

1 голос
/ 30 июня 2011

Рассмотрим этот пример: Пример

При использовании ComboBox он иллюстрирует идею: вы не хотите, чтобы первый элемент выбирался автоматически.

0 голосов
/ 01 июля 2011

Оказывается, моя настоящая проблема заключалась в том, что мое приложение генерировало новый список групп при каждом обращении к свойству, поэтому свойство value SelectedGroup никогда не равнялось значению в свойстве Groups.

Группы были реализованы с помощью итератора, подобного этому:

public IEnumerable<Group> Groups
{
   get
   {
      yield return new Group {Name="Todo"};
      yield return new Group {Name="Done"};
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...