1

我有两个组合框。第一个,Companys 有一个 Company 对象的集合。每个对象都有一个字符串名称和字符串集合:

这是课程:

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 关联的新属性但是为什么我没有工作?

4

2 回答 2

0

如果您将 Companys 设为 CollectionView,那么您应该能够将第二个组合绑定到 Companys.CurrentItem.Regions。

于 2011-05-18T06:37:57.370 回答
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);
    }
}
于 2011-05-20T22:03:53.583 回答