首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Datagrid中的Datagrid,将Datagrid的其中一列作为Datagrid本身?

Datagrid中的Datagrid,将Datagrid的其中一列作为Datagrid本身?
EN

Stack Overflow用户
提问于 2013-01-21 05:04:11
回答 1查看 1.3K关注 0票数 0

我有定义我的itemsource (我想要显示给用户的内容)的当前代码:

代码语言:javascript
复制
public class View
{
public string Name { get; set; }
public string Quantity { get; set; }
public List<Item> items { get; set; }
}

public class Item
{
public string ItemName { get; set; }
public double ItemQuantity { get; set; }
}

使用的DataSet:

代码语言:javascript
复制
List<View> myViews

所以你最终得到的数据如下:

代码语言:javascript
复制
ViewA 50 {ItemA 50, ItemB 10, ItemC 20)
ViewB 10 {ItemC 10, ItemD 10, ItemE 10)

在我现在的数据网格中,它完美地显示了前两列,但列表显示为"Collection“(而不是实际数据),我猜这是意料之中的。

这就是我现在的XAML

代码语言:javascript
复制
        <DataGrid Grid.Row="2" Margin="0,146,0,350"
              ItemsSource="{Binding myViews}"
              AutoGenerateColumns="False" Height="104">
            <DataGrid.Columns>
                <DataGridTextColumn Header="Name" Width="*" FontSize="16"
                                Binding="{Binding Path=Name}" />
                <DataGridTextColumn Header="Quantity" Width="*" FontSize="16"
                                Binding="{Binding Path=Quantity}" />
                <DataGridTextColumn Header="Items" Width="*" FontSize="16"
                                Binding="{Binding Path=items}" />
            </DataGrid.Columns>
        </DataGrid>

我正在尝试找到一种方法来向用户表示列表项(或者在这个datagrid中,或者在其他方法中,如果这不是正确的方法)。

我的想法实际上是在第3列中有另一个Datagrid,它有自己的项源,但我似乎找不到如何使第3列成为Datagrid (而不是像今天这样的文本)。有谁知道如何做到这一点(一些例子将是令人敬畏的)。

或者,如果这真的不是解决这个问题的正确方法,任何其他想法也将非常受欢迎。

谢谢,

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-21 05:20:56

您可以使用RowDetailsTemplate来显示Item对象的列表。

代码语言:javascript
复制
 <DataGrid Grid.Row="2"  Margin="0,146,0,350"
      ItemsSource="{Binding myViews}"
      AutoGenerateColumns="False" Height="104">
    <DataGrid.RowDetailsTemplate>
        <DataTemplate>
            <DataGrid AutoGenerateColumns="False" ItemsSource="{Binding items}">
                <DataGrid.Columns>
                    <DataGridTextColumn Header="Item Name" Width="Auto" FontSize="16"
                            Binding="{Binding Path=ItemName}" />
                    <DataGridTextColumn Header="Item Quantity " Width="Auto" FontSize="16"
                            Binding="{Binding Path=ItemQuantity }" />
                </DataGrid.Columns>
            </DataGrid>
        </DataTemplate>
    </DataGrid.RowDetailsTemplate>

    <DataGrid.Columns>
        <DataGridTextColumn Header="Name" Width="*" FontSize="16"
                        Binding="{Binding Path=Name}" />
        <DataGridTextColumn Header="Quantity" Width="*" FontSize="16"
                        Binding="{Binding Path=Quantity}" />                
    </DataGrid.Columns>
</DataGrid>

如果你想在第三列中显示Item对象的列表,你应该使用DataGridTemplateColumn

代码语言:javascript
复制
<DataGrid Grid.Row="2" Margin="0,146,0,350"
      ItemsSource="{Binding myViews}"
      AutoGenerateColumns="False" Height="104">
    <DataGrid.Columns>
        <DataGridTextColumn Header="Name" Width="*" FontSize="16"
                        Binding="{Binding Path=Name}" />
        <DataGridTextColumn Header="Quantity" Width="*" FontSize="16"
                        Binding="{Binding Path=Quantity}" />
        <DataGridTemplateColumn Header="Items">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <DataGrid AutoGenerateColumns="False" ItemsSource="{Binding items}">
                        <DataGrid.Columns>
                            <DataGridTextColumn Header="Item Name" Width="Auto" FontSize="16"
                            Binding="{Binding Path=ItemName}" />
                            <DataGridTextColumn Header="Item Quantity " Width="Auto" FontSize="16"
                            Binding="{Binding Path=ItemQuantity }" />
                        </DataGrid.Columns>
                    </DataGrid>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>               
    </DataGrid.Columns>
</DataGrid>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14429302

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档