我有两个组合框。第一个,Companys有一组公司对象。每个对象都有一个字符串Name和string collection:
这是班级:
public class clsCompany : PropertyChangedBase
{
public string Name { get; set; }
public BindableCollection<string> Regions;
public override string ToString()
{
return Name;
}
}
这是代码。选择项目时,TextBox会更新。但是应该显示区域的ComboBox不会:
<ComboBox x:Name="Companys" DisplayMemberPath="Name" Width="100"/>
<ComboBox x:Name="SelectedCompany_Regions" Width="100"/>
<TextBlock x:Name="SelectedCompany_Name" Width="100" />
我可以让第二个ComboBox工作的唯一方法是在我的ViewModel上创建一个与SelectedCompany.Regions相关联的新属性但是为什么我没有工作?
答案 0 :(得分:0)
如果您使Companys成为CollectionView,那么您应该能够将第二个组合绑定到Companys.CurrentItem.Regions。
答案 1 :(得分:0)
您的问题是由于缺少属性更改通知引起的。当您更新公司时,您还需要为该公司区域提出属性更改通知,以便区域ComboBox
知道其来源也已更新。您可以通过将Companies和SelectedCompany属性更改为以下内容来实现此目的:
public BindableCollection<Company> Companys { get; set; }
private Company _selectedCompany;
public Company SelectedCompany
{
get { return _selectedCompany; }
set
{
_selectedCompany = value;
NotifyOfPropertyChange(() => SelectedCompany);
NotifyOfPropertyChange(() => SelectedCompany.Regions);
}
}