2012-08-30 117 views
2

我想了解綁定,所以我想出了一個非常簡單的程序來嘗試和測試它。如何在XAML中設置ComboBox DataContext?

我在我的主窗口下面的元素:

<ComboBox Name="comboBox1" ItemsSource="{Binding}" /> 

在我的代碼,我有以下觀察集合:

public ObservableCollection<string> ComboItems = new ObservableCollection<string>(); 

我可以在運行過程中的任何一點成功添加的項目是這樣的:

comboBox1.DataContext = ComboItems; 
ComboItems.Clea(); 
ComboItems.Add("Item"); 

我的問題是,我怎麼可以在XAML中設置DataContext,使我不必在代碼中執行它?可能嗎?

謝謝!常見

回答

3

的東西是:

<Window DataContext="{Binding RelativeSource={RelativeSource Self}}"> 
    <ComboBox ItemsSource="{Binding ComboItems}" .../> 

但是通常要注入另一個對象實例爲DataContext,看看例如MVVM模式。 WPF中的屬性爲inherited,因此ComboBoxDataContextWindow,但它可以在任何級別覆蓋。

注意:對於綁定工作ComboItems需要是公共財產,而不是字段。感興趣

資源:

在最後一部分
+0

一個問題。我將ComboItems更改爲ObservableCollection {get;組; }。我相信這就是你所說的公共財產,但是,這給了我一個'對象引用未設置...'的錯誤。 –

+0

@ B-Rad:您是否先不設置值才訪問它? (你也應該通常使財產只爲只有一個只讀字段的集合,即只有私人只讀OC field = new OC ();公共OC 屬性{獲得{return field;}}') –

+0

@ B-Rad:請仔細閱讀數據綁定概述。 –

相關問題