2011-05-18 107 views
1

我有兩個組合框。第一個,Companys有一個公司對象的集合。每個對象都有一個字符串名稱和字符串集合:將ComboBox Box項目綁定到另一個Combobox的SelectedItem上

這裏是類:

public class clsCompany : PropertyChangedBase 
{ 
    public string Name { get; set; } 
    public BindableCollection<string> Regions; 
    public override string ToString() 
    { 
     return Name; 
    } 
} 

這裏是代碼。當我選擇一個項目時,TextBox更新就好了。但是,這應該顯示區域的組合框不會:

<ComboBox x:Name="Companys" DisplayMemberPath="Name" Width="100"/> 
<ComboBox x:Name="SelectedCompany_Regions" Width="100"/> 
<TextBlock x:Name="SelectedCompany_Name" Width="100" /> 

我能得到第2組合框的唯一途徑是建立在我的視圖模型,其與SelectedCompany.Regions相關聯的新屬性,但爲什麼做什麼,我沒有工作?

回答

0

您的問題是由缺少屬性更改通知引起的。當您更新公司時,您還需要爲該公司的區域提出物業更改通知,以便區域ComboBox知道其來源也已更新。您可以通過將公司和SelectedCompany屬性更改爲以下來實現此目的:

public BindableCollection<Company> Companys { get; set; } 
private Company _selectedCompany; 
public Company SelectedCompany 
{ 
    get { return _selectedCompany; } 
    set 
    { 
     _selectedCompany = value; 
     NotifyOfPropertyChange(() => SelectedCompany); 
     NotifyOfPropertyChange(() => SelectedCompany.Regions); 
    } 
} 
+0

我這樣做,但仍然沒有更新SelectedCompany_Regions組合框。 – 2011-05-24 15:19:53

+0

@Daniel Hmmmmm ...繼承人一個示例應用程序,適用於這種情況,據我所知... https://docs.google.com/leaf?id = 0B29ZkEHowpX0MGQ5M2U4NTItODNiMC00ZWM0LWE1ZTAtNWRjZGM5YTU5Njgx&hl = en_US&authkey = CPLW6tsH – 2011-05-24 19:58:21

+0

謝謝,我的地區是一個領域,而不是屬性,在公司類。這是問題。 – 2011-05-24 22:55:53

0

如果您使Companys成爲CollectionView,那麼您應該能夠將第二個組合綁定到Companys.CurrentItem.Regions。

+0

請解釋這是如何回答問題的。代碼示例可能會有所幫助。 – 2011-05-18 17:36:33

+0

Companys是一個BindableCollection - 什麼是CollectionView? – 2011-05-19 14:46:14

相關問題