嵌套的WPF数据表格

7

我有一个DataGrid(来自工具包),我想在DataGrid.RowDetailsTemplate中嵌套另一个DataGrid。关键是我想从主网格中检索出数据,然后基于行选择去获取不同表中的附加详细信息,并在详细模板中显示它。

这在两个独立的DataGrid中非常容易实现,但是我在嵌套版本中无法使其正常工作。

这是否可能? 如果可能,请有人指点我方向。 我应该注意到我正在使用LinqToSql类来填充数据。

感谢您的考虑。 -Joel


2
以一切善良和神圣的名义,请千万不要将“Datagrid”嵌套在另一个“Datagrid”中。 - Greg D
@GregD,您能否解释一下为什么您不会做那样的事情? - SoftwareSavant
除了原始的DBMS之外,DataGrid几乎总是错误的用户体验。它很重,很复杂,很密集,没有有效的上下文信息,并且表明设计良好的ux失败了。将重型、复杂的控件与另一个重型、复杂的控件分层只会带来噩梦般的场景。如果您有分层数据,请考虑复制Windows资源管理器范例。轻量级的列表视图结合树形控件是非常著名和易于理解的范例。不要在另一个DataGrid中嵌套DataGrid。 - Greg D
1个回答

5
如果您正在使用LinqToSQL,可以很容易地使用关联来完成此操作。在我的实践中,我创建了两个表:
GuyTable - 名字 - 姓氏 - UniqueID
GuyActionsTable - UniqueID - GuyID - 动作描述
我从GuyTable.UniqueID到GuyActionsTable.GuyID创建了一个一对多的关系,称为“GuyActions”。
然后,我像这样绑定我的DataGrid。请原谅任何错误,因为我是手动完成的:
<w:DataGrid ItemsSource={Binding Source={StaticResource YourDataSource}}>
<w:DataGrid.RowDetailsTemplate>
    <DataTemplate>
        <w:DataGrid ItemsSource={Binding GuyActions}>
            <w:DataGrid.Columns>
                <w:DataGridTextColumn Header="Action" DisplayMemberBinding="{Binding Action_Description}" />
            </w:DataGrid.Columns>
        </w:DataGrid>
    </DataTemplate>
</w:DataGrid.RowDetailsTemplate>
<w:DataGrid.Columns>
    <w:DataGridTextColumn Header="First Name" DisplayMemberBinding="{Binding First_Name}" />
    <w:DataGridTextColumn Header="Last Name" DisplayMemberBinding="{Binding Last_Name}" />
</w:DataGrid.Columns>


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接