我在xaml表单(MainWindow)上有一个组合框。
我将Items源设置为后面代码中的ObservableCollection。为了填充组合框,我使用了相对源(它位于ItemsControl中),这非常有效(没有它,如果没有填充):
ItemsSource="{Binding SelectableItems, RelativeSource={RelativeSource AncestorType={x:Type Window}}}"
我现在已将ObservableCollection分解为一个单独的View Model Model,名为'MainWindowViewModel',组合框不会填充。
我已将MainWindow的DataContext设置为我的ViewModel并检查它是否按预期填充其他控件。
我应该如何构造RelativeSource以便组合框填充?
由于
乔
答案 0 :(得分:1)
我需要在最后添加Path,因此:
ItemsSource="{Binding SelectableItems, RelativeSource={RelativeSource AncestorType={x:Type Window}}, Path=DataContext.SelectableItems}"
答案 1 :(得分:1)
您不想再使用RelativeSource
了。如果您未指定RelativeSource
(或Source
或ElementName
),则绑定将针对当前DataContext
进行解析。由于DataContext
是继承的,因此ItemsControl
从父DataContext
获取Window
。因此,此绑定将针对您的视图模型进行解析。
ItemsSource="{Binding SelectableItems}"