组合框触发器

本文关键字:触发器 组合 | 更新日期: 2023-09-27 18:21:40

我有一个对话框,其中包含一个组合框

  <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,在这种情况下,它为null。我可以检查null,但我更愿意理解为什么会发生这种情况。

组合框触发器

最可能的原因是CollectionViewSource跟踪其自己的SelectedItem,而此项可能是null。因此,当它结合ItemsSource时,它也试图同时将SelectedItem结合到CollectionViewSource.SelectedItem。在该绑定完成之后,常规的SelectedItem绑定运行,但是此时SelectedCompany已被设置为null

如果是这种情况,我建议远离CollectionViewSource,而是绑定到直接集合。

在我看来,问题可能是您有不同的window/viewmodel实例,打开一个新对话框可能会创建一个默认为null的虚拟机新实例。这是你的案子吗?