WPF - 在GridView中打印数组属性

时间:2013-12-08 00:02:15

标签: c# wpf arrays gridview

我有这个班级的名单:

public class A
{
    public string Name{ get; set; }
    public int ID { get; set; }
    public B[] B_details { get; set; } 
    public int phone { get; set; }

}

我想在GridView中显示。 B类也有一些属性,其中包含属性Name。 我的网格定义是:

<Grid>
    <DataGrid AutoGenerateColumns="True" Name="dataGrid1" IsReadOnly="True" AlternationCount="2" />
</Grid>

问题是,因为它是AutoGenerated GridView - B_details列中的值都以“B [] Array”的形式显示。 如何显示本课程所有B成员的姓名?

1 个答案:

答案 0 :(得分:1)

我可以想到两种方式:

1)使用类而不是B[],并覆盖其ToString()方法。所以你有类似的东西:

public class BArray : List<B>
{
    public override void ToString()
    {
        return string.Join(Items.Select(item => item.Name), ", ");
    }
}

这样,以逗号分隔的B.Name列表将打印在DataGrid列中。

2)关闭自动生成的列,并为DataTemplate列指定B_details。例如:

<DataGrid.Columns>
    <!-- insert other columns -->
    <DataGridTemplateColumn Header="B Details">
        <DataGridTemplateColumn.CellTemplate>
            <DataTemplate>
                <ItemsControl ItemsSource="{Binding B_details}">
                    <ItemsControl.ItemTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding Name}" Margin="0,0,5,0" />
                        </DataTemplate>
                    </ItemsControl.ItemTemplate>
                    <ItemsControl.ItemsPanel>
                        <ItemsPanelTemplate>
                            <StackPanel Orientation="Horizontal" />
                        </ItemsPanelTemplate>
                    </ItemsControl.ItemsPanel>
                </ItemsControl>
            </DataTemplate>
        </DataGridTemplateColumn.CellTemplate>
    </DataGridTemplateColumn>
<DataGrid.Columns>