C# Datagrid项。添加不显示内容-WPF/XAML

C# Datagrid项。添加不显示内容-WPF/XAML,c#,wpf,xaml,datagrid,C#,Wpf,Xaml,Datagrid,我有一个名为dgFiles的数据网格,它有4列,并用字符串填充每列。当我使用 //Add Row MessageBox.Show(fileName + " " + dateModified + " " + fileType + " " + fileLength); dgFiles.Items.Add(new object[] { fileName, dateModified, fileType, fileLength + "

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

//Add Row
MessageBox.Show(fileName + " " + dateModified + " " + fileType + " " + fileLength);
dgFiles.Items.Add(new object[] { fileName, dateModified, fileType, fileLength + " kb" });
dgFiles.Items.Refresh();
messagebox显示我想要填充datagrid的正确字符串,但是我的datagrid只显示一个空行

我的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

您需要将每列的
绑定
属性设置为绑定到您添加到
/
项资源
集合的数据项的公共属性的绑定:

<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*"/>
如果希望能够编辑
DataGrid
中的数据,则不能将匿名对象添加到其
属性中。相反,您应该使用属性定义一个类,并将
ItemsSource
设置为此类型的
IEnumerable

List<YourClass> items = new List<YourClass>();
items.Add(new YourClass { FileName = fileName, Date = dateModified, Type = fileType, Size = fileLength + " kb" });
dgFiles.ItemsSource = items;
List items=newlist();
添加(新的YourClass{FileName=FileName,Date=dateModified,Type=fileType,Size=fileLength+“kb”});
dgFiles.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*"/>
如果希望能够编辑
DataGrid
中的数据,则不能将匿名对象添加到其
属性中。相反,您应该使用属性定义一个类,并将
ItemsSource
设置为此类型的
IEnumerable

List<YourClass> items = new List<YourClass>();
items.Add(new YourClass { FileName = fileName, Date = dateModified, Type = fileType, Size = fileLength + " kb" });
dgFiles.ItemsSource = items;
List items=newlist();
添加(新的YourClass{FileName=FileName,Date=dateModified,Type=fileType,Size=fileLength+“kb”});
dgFiles.ItemsSource=项目;

大多数人不会像那样手动使用Items集合。WPF最奇妙的地方是它的绑定功能。典型的方法是创建一个具有FileName、DateModified、Type和Size属性的类来保存数据,并将该类的实例添加到ObservableCollection。然后在XAML中,您可以声明@ashbygeek谢谢,我将尝试一下大多数人不会像那样手动使用Items集合。WPF最奇妙的地方是它的绑定功能。典型的方法是创建一个具有FileName、DateModified、Type和Size属性的类来保存数据,并将该类的实例添加到ObservableCollection。然后在XAML中,你可以说@ashbygeek谢谢你,我会尝试一下,这对XAML来说还是很新鲜的,所以这对我来说很有意义:)谢谢!我对XAML还是新手,所以这对我来说很有意义:)谢谢!