【问题标题】:How to display and edit Collection of an object property in grid columns如何在网格列中显示和编辑对象属性的集合
【发布时间】:2015-03-12 10:07:35
【问题描述】:

我有一组对象,我想将它们显示到DataGrid 中。我的集合中存在嵌套类型集合的问题 我需要在同一个网格中显示它们。请在下面找到我的对象集合:

public class DataSource
  {
        public string Name { get; set; }

        public List<Block> Children { get; set; }

  }

public class Block
{
    public string BlockName { get; set; }

    public int BlockNumber { get; set; }

    public string BlockAdress { get; set; }

    public string BlockStatus { get; set; }
}

public ObservableCollection SourceData { get; set; }

我的 Xaml

    <StackPanel Orientation="Vertical">
                <DataGrid Name="DgDataSource" AutoGenerateColumns="False" CanUserAddRows="False" ItemsSource="{Binding SourceData}">
                    <DataGrid.Columns>
                        <DataGridTextColumn Header="Name" Binding="{Binding Name}" Width="1*"/>
                        <DataGridTextColumn Header="Block Name" Binding="{Binding BlockName}" Width="1*"/>
                        <DataGridTextColumn Header="Block Number" Binding="{Binding BlockNumber}" Width="1*"/>
                        <DataGridTextColumn Header="Block Adress" Binding="{Binding BlockAdress}" Width="1*"/>
                        <DataGridTextColumn Header="BlockStatus" Binding="{Binding BlockStatus}" Width="1*"/>
                    </DataGrid.Columns>
                </DataGrid>
            </StackPanel

>

如何在我的DataGrid 中显示块列表。请在附图中找到我希望我的 GridControl 的行为方式。

【问题讨论】:

    标签: c# wpf datagrid


    【解决方案1】:

    这将对您有所帮助:

    <DataGrid AutoGenerateColumns="False" x:Name="DataGrid_Test">
                <DataGrid.Columns>
                    <DataGridTemplateColumn Header="Name"  >
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <Grid>
                                    <TextBlock Text="{Binding Path=Name}"  VerticalAlignment="Center" Margin="3,3,3,3"/>
                                </Grid>
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>
                    <DataGridTemplateColumn Header="Childrens">
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <DataGrid AutoGenerateColumns="False" CanUserAddRows="False" ItemsSource="{Binding Children}">
                                    <DataGrid.Columns>
                                        <DataGridTextColumn Header="Block Name" Binding="{Binding BlockName}" />
                                        <DataGridTextColumn Header="Block Number" Binding="{Binding BlockNumber}" />
                                        <DataGridTextColumn Header="Block Adress" Binding="{Binding BlockAdress}" />
                                        <DataGridTextColumn Header="BlockStatus" Binding="{Binding BlockStatus}" />
                                    </DataGrid.Columns>
                                </DataGrid>
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>
                </DataGrid.Columns>
            </DataGrid>
    

    【讨论】:

    • 好吧,我想过做这样的事情,但这不是我想要的,因为你会在顶部有一个空标题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-30
    • 1970-01-01
    • 1970-01-01
    • 2011-05-07
    • 1970-01-01
    • 2017-11-28
    • 1970-01-01
    相关资源
    最近更新 更多