我的代码背后如下
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='')
据我了解,我已将我的窗口datacontext设置为代码隐藏,我认为通过将relaticesource指定为窗口我可以访问这些属性吗?
我的viewmodel具有该属性
public ObservableCollection<VendorViewModel> Vendors
我还想补充一点,我的组合框在datagridtemplatecolumn里面,正确设置了datacontext并且我能够访问这些属性,例如我的datagrid有datagridtextcolumn并且绑定在它上面工作
<DataGridTextColumn Header="Repair Id" Width="Auto" Binding="{Binding RepairID}"/>
答案 0 :(得分:1)
您需要绑定到窗口datacontext
的属性,而不是window
<ComboBox ItemsSource="{Binding Path=DataContext.Vendors,
RelativeSource={RelativeSource AncestorType=Window}}"
Visibility="{Binding RepairHasNoVendors,
Converter={StaticResource VisibilityOfBool}}" />