正确设置RelativeSource

时间:2011-09-12 11:19:01

标签: wpf xaml observablecollection

我在xaml表单(MainWindow)上有一个组合框。

我将Items源设置为后面代码中的ObservableCollection。为了填充组合框,我使用了相对源(它位于ItemsControl中),这非常有效(没有它,如果没有填充):

ItemsSource="{Binding SelectableItems, RelativeSource={RelativeSource AncestorType={x:Type Window}}}"

我现在已将ObservableCollection分解为一个单独的View Model Model,名为'MainWindowViewModel',组合框不会填充。

我已将MainWindow的DataContext设置为我的ViewModel并检查它是否按预期填充其他控件。

我应该如何构造RelativeSource以便组合框填充?

由于

2 个答案:

答案 0 :(得分:1)

我需要在最后添加Path,因此:

ItemsSource="{Binding SelectableItems, RelativeSource={RelativeSource AncestorType={x:Type Window}}, Path=DataContext.SelectableItems}"

答案 1 :(得分:1)

您不想再使用RelativeSource了。如果您未指定RelativeSource(或SourceElementName),则绑定将针对当前DataContext进行解析。由于DataContext是继承的,因此ItemsControl从父DataContext获取Window。因此,此绑定将针对您的视图模型进行解析。

ItemsSource="{Binding SelectableItems}"