我有一个名为dgFiles的数据网格,它有4列,并用字符串填充每列。当我使用
将项目添加到我的数据网格时//Add Row
MessageBox.Show(fileName + " " + dateModified + " " + fileType + " " + fileLength);
dgFiles.Items.Add(new object[] { fileName, dateModified, fileType, fileLength + " kb" });
dgFiles.Items.Refresh();
消息框显示我想要填充数据网格的正确字符串,但是我的数据网格只显示一个空行。
我的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
答案 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