2009-09-01 128 views
1

如何將一個列表框綁定到我在包含窗口的類文件中擁有的列表中?我看了看,有一個ItemsSource屬性,我可以設置,但我不知道如果這是我想要的,我也不知道如何設置它。數據綁定WPF列表框?

回答

3

我想通了:這一cheatsheet,我需要使用以下命令:

ItemsSource="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=Categories}" 

其中Path被設置爲包含要綁定對字符串列表屬性的名稱。

3

這幾乎是它:

<ListBox ItemsSource="{Binding}"> 
</ListBox> 

然後設置你的DataContext某種字符串的集合,並且僅此而已。如果你不想直接綁定到DataContext,你可以這樣做,但是你可能想把它放在它自己的控件中,以便更好地分離功能。

+0

我真的失去了這裏...... DataContext的?哪裏是?對不起,這樣的noob ... – RCIX 2009-09-01 07:06:01

+0

DataContext是控件的屬性 – 2009-09-01 07:12:05

+0

它在cs文件中,而不是在xaml文件中。它是基類的成員:System.Windows.FrameworkElement。只要做一些關於WPF數據綁定的搜索,你會發現很多幫助和例子。 – 2009-09-01 07:13:28

3

這是一個非常廣泛的問題。你最好的選擇是閱讀MSDN上的introductory topic

+0

同意。這是WPF數據綁定的基礎知識,因此OP一般需要詳細閱讀它。 – Noldorin 2009-09-01 07:08:50

+0

我已經有了一個替代解決方案,但它是hacky(手動添加所有必需的項目到列表框的items屬性),雖然這很有用,但它不一定會得到我需要的解決方案。在這種情況下,我喜歡魚而不是教學...... – RCIX 2009-09-01 07:14:13

0

這裏有一些方法可以做到這一點:

一個是要使列表窗口類的靜態屬性,然後綁定到它是這樣的:

{Binding Source={x:Static local:MyWindow.MyList}} 

你一般只如果你想讓窗口的所有實例使用相同的列表,那麼做到這一點。

另一種方法是在列表中添加到窗口的Resources收集,通過把

Resources.Add("MyListKey", MyList); 

在構造函數,調用InitializeComponent之前。 (關鍵有StaticResource標記擴展被執行之前,要在資源字典)。然後,你可以綁定到它是這樣的:

{Binding Source={StaticResource MyListKey}}