我有一个看起来像这样的数据网格
<tk:DataGrid ItemsSource="{Binding Parents}" AutoGenerateColumns="False">
<tk:DataGrid.Columns>
<tk:DataGridTextColumn Header="Description" Binding="{Binding ID}" />
<tk:DataGridTemplateColumn Header="Description" >
<tk:DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<TextBox Text="{Binding Path=Description, Mode=TwoWay}" />
</DataTemplate>
</tk:DataGridTemplateColumn.CellEditingTemplate>
<tk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=Description}"/>
</DataTemplate>
</tk:DataGridTemplateColumn.CellTemplate>
</tk:DataGridTemplateColumn>
<tk:DataGridTemplateColumn Header="Child Description" >
<tk:DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox SelectedIndex="{Binding Path=ChildID}" ItemsSource="{Binding Path=Children}" />
</DataTemplate>
</tk:DataGridTemplateColumn.CellEditingTemplate>
<tk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=Children.Description}"/>
</DataTemplate>
</tk:DataGridTemplateColumn.CellTemplate>
</tk:DataGridTemplateColumn>
</tk:DataGrid.Columns>
</tk:DataGrid>
视图绑定到一个ViewModel,它暴露了一个应该是我的行的Parent列表和一个应该是组合框下拉内容的Children列表。它的设置方式我获得了Parent的行,但是在Child Description列中没有数据。当我双击时,该行变得可编辑并且组合框显示出来。但没有数据。当我查看输出窗口时,我看到绑定错误说“BindingExpression路径错误:在'对象'''父级'上找不到'儿童'属性”。我知道......我如何告诉它查找一个级别?我已经尝试将datagrid绑定到viewmodel,但是没有显示任何行。我已经尝试过使用relativesource标记,我仍然无法看到我想要它看到的内容。我确定我的语法不正确。我找不到任何例子。我做错了什么?
答案 0 :(得分:1)
可能有更聪明的方法来完成此任务,但我将使用的愚蠢,快速的方法是修改Parent对象以包含Children集合。这将使父和子的关系明确,您不必从上面更改您的xaml语法。
如果您不想将Children集合添加到Parent对象,则可以使用以下xaml绑定::
ItemsSource="{Binding RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type tk:DataGrid}},
Path=DataContext.Children}"