Datagrid Items.Add不显示内容 - WPF / XAML

时间:2017-06-19 15:33:25

标签: c# wpf xaml datagrid

我有一个名为dgFiles的数据网格,它有4列,并用字符串填充每列。当我使用

将项目添加到我的数据网格时
//Add Row
MessageBox.Show(fileName + " " + dateModified + " " + fileType + " " + fileLength);
dgFiles.Items.Add(new object[] { fileName, dateModified, fileType, fileLength + " kb" });
dgFiles.Items.Refresh();

消息框显示我想要填充数据网格的正确字符串,但是我的数据网格只显示一个空行。

dgFiles

我的XAML数据网格的代码

    <!--Data Grid-->
    <DataGrid x:Name="dgFiles" Grid.Row="4" Margin="5" GridLinesVisibility="None" IsReadOnly="True" RowHeaderWidth="0" MouseDoubleClick="dgFiles_MouseDoubleClick">
        <DataGrid.Columns>
            <DataGridTextColumn Header="File Name"      Width="30*"/>
            <DataGridTextColumn Header="Date Modified"  Width="40*"/>
            <DataGridTextColumn Header="Type"           Width="14*"/>
            <DataGridTextColumn Header="Size"           Width="10*"/>
        </DataGrid.Columns>
        <DataGrid.CellStyle>
            <Style TargetType="DataGridCell">
                <Style.Triggers>
                    <Trigger Property="IsSelected" Value="True">
                        <Setter Property="BorderThickness" Value="0"></Setter>
                    </Trigger>
                </Style.Triggers>
            </Style>
        </DataGrid.CellStyle>
    </DataGrid>

任何帮助都将非常感谢:)

谢谢,iato

1 个答案:

答案 0 :(得分:1)

您需要将每列的Binding属性设置为绑定到您添加到Items / {{的数据项的公共属性的绑定1}}集合:

ItemsSource

这也意味着您的数据对象必须公开公共属性

<DataGridTextColumn Header="File Name" Binding="{Binding Filename}" Width="30*"/>
<DataGridTextColumn Header="Date Modified" Binding="{Binding Date}" Width="40*"/>
<DataGridTextColumn Header="Type" Binding="{Binding Type}" Width="14*"/>
<DataGridTextColumn Header="Size" Binding="{Binding Size}" Width="10*"/>

如果您希望能够编辑dgFiles.Items.Add(new { FileName = fileName, Date = dateModified, Type = fileType, Size = fileLength + " kb" }); 中的数据,则无法将匿名对象添加到其DataGrid属性中。相反,您应该使用属性定义一个类,并将Items设置为此类型的ItemsSource

IEnumerable