我有定义我的itemsource (我想要显示给用户的内容)的当前代码:
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:
List<View> myViews所以你最终得到的数据如下:
ViewA 50 {ItemA 50, ItemB 10, ItemC 20)
ViewB 10 {ItemC 10, ItemD 10, ItemE 10)在我现在的数据网格中,它完美地显示了前两列,但列表显示为"Collection“(而不是实际数据),我猜这是意料之中的。
这就是我现在的XAML
<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 (而不是像今天这样的文本)。有谁知道如何做到这一点(一些例子将是令人敬畏的)。
或者,如果这真的不是解决这个问题的正确方法,任何其他想法也将非常受欢迎。
谢谢,
发布于 2013-01-21 05:20:56
您可以使用RowDetailsTemplate来显示Item对象的列表。
<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。
<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>https://stackoverflow.com/questions/14429302
复制相似问题