Combobox триггеры - PullRequest
       3

Combobox триггеры

0 голосов
/ 27 января 2012

У меня есть диалоговое окно, которое содержит поле со списком

  <ComboBox Margin="0,1,34,36" Grid.Row="1" Grid.Column="1" ItemsSource ="{Binding Path=CompanyView}" DisplayMemberPath="CompanyName"  IsSynchronizedWithCurrentItem="True"
              SelectedItem="{Binding Path=SelectedCompany}"

Источник элементов привязан к источнику коллекции, а выбранный элемент связан со свойством в моей модели представления, которое не является общим

  private Company selectedCompany;
       public Company SelectedCompany
       {

           get{ return this.selectedCompany;}
           set
           {
               this.selectedCompany = value;
               FilterString = this.selectedCompany.Id;
           }
       }

Я могу без проблем открывать и закрывать диалог столько раз, сколько захочу. Моя проблема в том что если я выбираю элемент в комбо компании и затем закрываю диалоговое окно, когда я снова открываю диалоговое окно, форма пытается установить SelectedCompany, которая в этом случае равна нулю. Я мог бы проверить на ноль, но я бы лучше понял, почему это происходит.

Ответы [ 2 ]

0 голосов
/ 27 января 2012

Наиболее вероятная причина в том, что CollectionViewSource отслеживает свой собственный SelectedItem, и этот элемент, вероятно, null. Поэтому, когда он связывает ItemsSource, он также пытается связать SelectedItem с CollectionViewSource.SelectedItem одновременно. После завершения этой привязки запускается обычная SelectedItem привязка, однако к этому моменту SelectedCompany был установлен null.

Если это так, я бы посоветовал держаться подальше от CollectionViewSource и вместо этого привязывать к прямой коллекции.

0 голосов
/ 27 января 2012

Мне кажется, что проблема может заключаться в том, что у вас есть разные экземпляры окна / модели представления, и открытие нового диалогового окна может создать новый экземпляр виртуальной машины, для которого по умолчанию для selectedCompany установлено значение null. Это ваш случай?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...