绑定到父数据上下文

本文关键字:上下文 数据 绑定 | 更新日期: 2023-09-27 18:37:18

我的代码隐藏如下

this.DataContext = MainWindowViewModel.Instance;

我尝试过的 xaml

<ComboBox ItemsSource="{Binding Vendors, 
    RelativeSource={RelativeSource AncestorType=Window}}" 
    Visibility="{Binding RepairHasNoVendors, 
    Converter={StaticResource VisibilityOfBool}}"/>

我的错误

Error: 40 : BindingExpression path error: 'Vendors' property not found on 'object' 
''MainWindow' (Name='')'. BindingExpression:Path=Vendors; DataItem='MainWindow' 
(Name='')

据我了解,我已经在代码隐藏中设置了我的窗口数据上下文,我认为通过将 relaticesource 指定为窗口,我可以访问这些属性?

我的视图模型具有该属性

public ObservableCollection<VendorViewModel> Vendors

我还想补充一点,我的组合框位于 datagridtemplatecolumn 内,其数据上下文设置正确,我能够访问这些属性,例如我的 datagrid 具有 datagridtextcolumn 和绑定工作

<DataGridTextColumn Header="Repair Id" Width="Auto" Binding="{Binding RepairID}"/>

绑定到父数据上下文

您需要

绑定到窗口的属性datacontext而不是window

<ComboBox ItemsSource="{Binding Path=DataContext.Vendors, 
    RelativeSource={RelativeSource AncestorType=Window}}" 
    Visibility="{Binding RepairHasNoVendors, 
    Converter={StaticResource VisibilityOfBool}}" />