2009-09-01 123 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}}