0

我有一个看起来像这样的数据网格

<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,该 ViewModel 公开一个应该是我的行的父列表和一个应该是组合框下拉内容的子列表。它的设置方式我得到了父母的行,但在子描述列中没有数据。当我双击该行时,该行变为可编辑并出现组合框。但是没有数据。当我查看输出窗口时,我看到绑定错误说“BindingExpression path error: 'Children' property not found on 'object' ''Parent'”。我知道...我如何告诉它查找一个级别?我尝试将数据网格绑定到视图模型,但没有显示任何行。我已经尝试使用 relativesource 标记,但我仍然无法让它看到我希望它看到的内容。我确定我的语法不正确。我找不到任何例子。

4

1 回答 1

1

完成这项任务可能有更聪明的方法,但我会使用的愚蠢、快速的方法是修改 Parent 对象以包含 Children 集合。这将使 Parent 和 Child 的关系变得明确,并且您不必从上面更改您的 xaml 语法。

如果您不想将 Children 集合添加到 Parent 对象,则可以使用以下 xaml 绑定:

    ItemsSource="{Binding RelativeSource={RelativeSource FindAncestor, 
AncestorType={x:Type tk:DataGrid}}, 
Path=DataContext.Children}"
于 2009-11-23T18:51:45.503 回答