2017-06-19 505 views
0

我有一个名为dgFiles的数据网格,它有4列,并用字符串填充每列。当我去到一个项目添加到我的DataGrid使用Datagrid Items.Add不显示内容 - WPF/XAML

//Add Row 
MessageBox.Show(fileName + " " + dateModified + " " + fileType + " " + fileLength); 
dgFiles.Items.Add(new object[] { fileName, dateModified, fileType, fileLength + " kb" }); 
dgFiles.Items.Refresh(); 

在MessageBox显示正确的字符串我想填充我与数据网格,但是我的DataGrid中只显示一个空行。

dgFiles

代码到我的XAML的Datagrid

<!--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> 

任何帮助,将不胜感激:)

感谢,亚托

+1

大多数人不使用手动Items集合类的。关于WPF最精彩的是它的绑定功能。典型的方法是创建一个FileName,DateModified,Type和Size属性的类来存放数据,将这个类的实例添加到ObservableCollection中。然后在XAML中,您可以声明 ashbygeek

+0

@ashbygeek谢谢我会给这个尝试 – iato

回答

1

你需要设置每个Binding财产列绑定到一个绑定到公共财产的数据

<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" }); 

您添加到Items/ItemsSource集合项目DataGrid虽然您不能将匿名对象添加到其Items属性中。相反,你应该定义你的属性的类,并设置ItemsSource这种类型的IEnumerable

List<YourClass> items = new List<YourClass>(); 
items.Add(new YourClass { FileName = fileName, Date = dateModified, Type = fileType, Size = fileLength + " kb" }); 
dgFiles.ItemsSource = items; 
+0

Im仍然是XAML的新手,所以这对我来说很有意义:)谢谢! – iato