DataTemplate中的DataGrid绑定

时间:2012-02-27 21:45:20

标签: wpf xaml binding datagrid datatemplate

我目前正在尝试在数据网格内部进行一些绑定,但是我在查看视图的DataContext级别时遇到了问题。

以下是代码:

<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox SelectedItem="{Binding Operators}"
ItemsSource="{Binding DataContext.OperatorList,ElementName=FilterGrid}" />
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>

关于什么错误的想法? View的Viewmodel连接在后面的代码中。

编辑:无效的绑定是上面显示的ItemsSource绑定

1 个答案:

答案 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