2014-07-21 113 views
1

嗨,大家好我是WPF的新手。我在兩個不同的類中有兩個數據上下文,它們被View中的元素綁定到數據觸發器中,而另一個則無法工作,因爲它們無法將兩個數據上下文綁定在一起。如何使用datacontext從兩個不同的類綁定xaml?有沒有其他方法可以使它更容易?如何將wpf與來自不同類的特定datacontext綁定?

A類

public Window1() 
{ 
    InitializeComponent(); 
    Appointments = new Appointments(); 
    DataContext = Appointments; 

} 

B類

private void FilterAppointments() 
     { 
      this.DataContext = this; 

... 

回答

2

首先,你應該從來沒有在任何UserControl了嚴重的WPF應用程序使用DataContext = this;。其次,您應該查看MVVM設計模式,該模式爲每個視圖提供了視圖模型的概念。您的WindowUserControl是「視圖」,您的視圖模型只是包含您需要在視圖中顯示的數據屬性的所有的類。

因此,你應該聲明一個視圖模型類(實現了INotifyPropertyChanged interface),並把你想要的任何數據綁定到那個。最後,你應該設置對象作爲DataContext屬性值。這樣,你就可以訪問你需要的所有數據。

你的問題再次尋找,它只是發生,我認爲你可能已經設置了DataContextthis,讓你可以使用你在WindowUserControl聲明的屬性。如果是這種情況,那麼你應該而不是DataContext設置爲this,而不是使用RelativeSource Binding來訪問屬性。這將釋放實際的DataContext然而你喜歡設置。試試這個BindingWindowUserControl內:

<TextBlock Text="{Binding PropertyName, RelativeSource={RelativeSource 
    AncestorType={x:Type YourPrefix:YourWindowOrControl}}}" /> 
+0

感謝您的答覆。但是,如果我想在視圖中將布爾varibale綁定到數據觸發器,我該怎麼做? @Sheridan – user3854148

+0

一個'綁定路徑'是一個'綁定路徑'無論你使用它...所以...仍然是相同的'綁定路徑',但顯然使用你的*實際*屬性名稱。 – Sheridan

+0

非常感謝。我感謝您的幫助。 @Sheridan – user3854148

相關問題