2017-06-19 173 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