【问题标题】:Nested WPF DataGrids嵌套的 WPF 数据网格
【发布时间】:2009-05-15 22:59:02
【问题描述】:

我有一个 DataGrid(来自工具包),我想在 DataGrid.RowDetailsTemplate 中嵌套另一个 DataGrid。诀窍是我想从主网格中的一个表中取回数据,然后根据行选择从另一个表中获取额外的详细信息,并将其显示在详细信息模板的 DataGrid 中。

这很容易在 2 个单独的 DataGrids 中完成,但我无法让它与嵌套版本一起使用。

这甚至可能吗? 如果是这样,有人可以指出我正确的方向。 我应该注意我正在使用 LinqToSql 类来填充数据。

感谢您的考虑。 -乔尔

【问题讨论】:

  • 以所有美好和神圣的名义,请不要将datagrid嵌套在另一个datagrid中。
  • @GregD 你能解释一下你为什么不这样做吗?
  • 除了原始 DBMS 之外,DataGrid 实际上总是错误的用户体验。它很重,很复杂,很密集,它不包含有效的上下文信息,这表明设计好的用户体验失败。将繁重、复杂的控件与 另一个 繁重、复杂的控件分层只是一个噩梦般的场景。如果您有分层数据,请考虑复制 Windows Explorer 范例。轻量级列表视图与树控件相结合是非常众所周知且易于理解的范例。不要不要将数据网格嵌套在另一个数据网格中。

标签: wpf xaml wpftoolkit


【解决方案1】:

如果您使用的是 LinqToSQL,则可以使用关联轻松完成此操作。在我的实践中,我创建了两个表:

GuyTable

  • 名字
  • 姓氏
  • 唯一 ID

GuyActionsTable

  • 唯一 ID
  • 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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-18
    • 1970-01-01
    • 2011-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多