绑定到父datacontext

时间:2015-01-13 15:24:56

标签: c# wpf mvvm data-binding

我的代码背后如下

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}"/>

1 个答案:

答案 0 :(得分:1)

您需要绑定到窗口datacontext的属性,而不是window

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