组合框触发器
本文关键字:触发器 组合 | 更新日期: 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的虚拟机新实例。这是你的案子吗?