我目前正在尝试在数据网格内部进行一些绑定,但是我在查看视图的DataContext
级别时遇到了问题。
以下是代码:
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox SelectedItem="{Binding Operators}"
ItemsSource="{Binding DataContext.OperatorList,ElementName=FilterGrid}" />
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
关于什么错误的想法? View的Viewmodel连接在后面的代码中。
编辑:无效的绑定是上面显示的ItemsSource
绑定
答案 0 :(得分:3)
当您使用DataTemplate
的{{1}}时,您无法使用DataGrid
绑定,因为由于ElementName
内的FindControl
分辨率功能的限制,它无法正确解析DataGrid控件层次结构。你需要使用一个RelativeSource
绑定在控制树上向上寻找一个特定的控件类型(你需要确定 - 从你的元素名称我认为它是DataGrid
祖先类型< / em>的)。
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox
SelectedItem="{Binding Operators}"
ItemsSource="{Binding DataContext.OperatorList,
RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"
/>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
请参阅使用MVVM共享一些可能相关的示例代码的this SO post,以访问DataContext
主机的UserControl
以填充ComboBox ItemsSource
。