2013-01-21 331 views
2

我正在努力與Wpf DataGrid。它的ItemsSource是一個DataTable其中是由類型單元格組成Tuple<int, string>如何在DataGrid中設置DisplayMemberPath?

這是關於如何創建我的DataTable一小段代碼。

  // Create columns 
      for (int j = 0; j < maxCount; j++) { 
       dt.Columns.Add(selectedTests[i].Name + " " + (j + 1).ToString(), typeof(Tuple<int, string>)); 
      } 

      // Create rows 
      for (int k = 0; k < tuple.Item2.Count; k++) { 
       var newRow = dt.NewRow(); 
       dt.Rows.Add(newRow); 
      } 

      ... 
      dt.Rows[k][i + m] = new Tuple<int, string>(n, str); 

然後我設置DataTableDataGrid,我想從數組只顯示屬性Item2,我需要保護者元組實例在這一刻。並且無法定義我的列以設置displaymemberPath,因爲它是自動生成的。

<DataGrid x:Name="dataGrid" LoadingRow="dataGrid_LoadingRow_1" ItemsSource="{Binding DataTable}" DisplayMemberPath="{Binding Item2}"> 

我所有的數據網格轉換爲字符串,這樣我的元組的東西的時候:

enter image description here

回答

-1

你只需要手動設置列,並將其綁定到項目2列。

<DataGrid ItemsSource="{Binding DataTablePropertyInYourDataContext}"> 
<DataGrid.Columns> 
<DataGridTextColumn 
      Header="Item2" 
      Binding="{Binding ColumnNameInYourDataTable}" 
      /> 
</DataGrid.Columns> 
</DataGrid> 

或另一種解決方法:您可以訂閱AutoGeneratingColumn事件,當不需要的列等於true時,可以設置Cancel。來看看這對MSDN

希望幫助

+0

但正如我告訴你,我'不是手動生成我的列,我真的不知道列的數量 –

+0

我不知道我是否得到你的問題。你可以動態添加所需的DataGrid列和它們的綁定? – HichemSeeSharp

+0

是的,我mea,它們是使用'AutoGenerateColumns' datagrid屬性自動創建的 –

0

在本question說,你可以設置你的代碼隱藏結合。

所以,你可以訂閱的yourgrid_AutoGeneratingColumn事件,並做到這一點:

(e.Column as DataGridTextColumn).Binding = new Binding("Title"); 

肯定,你應該通過一些解決方案,通過你的ColumnNameAutoGeneratingColumn事件...

相關問題