2013-12-15 50 views
1

在我的WPF應用程序綁定到一個屬性值,我有兩個班,ClassA和ClassB的。我已經設置的DataContext到ClassA的代碼隱藏在從兩個不同的類

this.DataContext = new ClassA(); 

所以在我的XAML我可以綁定一個標籤內容,以ClassA的財產Wish像下面

<Label Name="myLabel" FontSize="40" Content="{Binding Wish}"/> 

這工作完全正常。但是,當我嘗試與另一個班級ClassB一樣時,問題就出現了。隨着我this.DataContext = new ClassA();的代碼仍然留下來,我想從ClassB的屬性值(是的,ClassB的具有相同的名稱和代碼的屬性)在我的XAML做類似下面

<StackPanel DataContext="{Binding ClassB}"> 
      <Label Name="myLabelFromB" FontSize="40" Content="{Binding Wish}"/> 
</StackPanel> 

中,我失敗了。當我運行時,MainWindow只顯示第一個標籤。 爲什麼myLabelFromB犯規得到ClassB.Wish的價值,即使其母公司的DataContext設置ClassB的?是否有可能在不修改我現有的代碼的情況下實現相同的功能?

+0

'ClassB'財產'ClassA'存在嗎?顯示ClassA的代碼。 –

回答

3

對於工作,你需要有ClassB property in ClassA有點像這樣:

public class ClassA 
{ 
    public ClassA() 
    { 
     this.ClassB = new ClassB(); 
    } 

    public string Wish { get; set;} 
    public ClassB ClassB { get; set;} 
} 

,那麼這將工作太:

<StackPanel> 
    <Label Name="myLabelFromB" FontSize="40" Content="{Binding ClassB.Wish}"/> 
</StackPanel> 
+0

感謝@Rohit的回答。但我的疑問是,即使myLabelFromB使用DataContext作爲ClassB,爲什麼不能獲得Wish屬性?是因爲我從未創建過ClassB的實例嗎? – snippetkid

+0

是的,你必須創建綁定到它ClassB的實例。要麼在資源部分或像我在我的答案中提到的。 –

+1

完成了這項工作。榮譽:) – snippetkid

相關問題