2013-04-26 78 views
2

表我有一個DataGrid應該有第一列文本列,然後在隨後的列應是組合框與一組不同的項目爲每列的。數據網格,它使用結合創建組合框

的問題是,組合框列的數量是動態的,因爲是這應該是在每列的組合框的項目。它們在約束時間是已知的,但不是在編譯時。

我可以綁定到這個時尚DataGrid?我已經想出瞭如何綁定到表格以獲取值到TextBox列,但我不知道如何獲得組合框列。

+1

條件聽起來有點失去。你有沒有想過創建一個自定義控件。什麼類型的數據將被綁定到組合框,你怎麼知道需要多少列?那麼用戶需要怎樣處理這些行(排序,添加,刪除等)。 datagrid使用的集合的類型是什麼。請提供更多信息 – 2013-04-30 21:07:41

回答

0

而不是使用一個DataGrid的,你可以使用一個ListView有一個GridView,並通過結合到包含在列應該是什麼樣的必要信息的一些對象轉換器創建的GridView控件。如果我想綁定到一個未知維數組,我通常會這樣做。

0

這最初發布的回答爲this question

DataGrid中的列沒有一個DataContext,因爲他們永遠不會加入到可視化樹。聽起來有點奇怪,但看看vince's blog,它有一個很好的視覺佈局的例子。一旦繪製網格細胞具有數據上下文,你可以使用正常的綁定在他們設置的組合框項目源(不是靜態的資源。)

您可以訪問組合框項目源這樣

<DataGridComboBoxColumn> 
    <DataGridComboBoxColumn.EditingElementStyle> 
     <Style TargetType="ComboBox"> 
     <Setter Property="ItemsSource" Value="{Binding Path=MyBindingPath}" /> 
     </Style> 
    </DataGridComboBoxColumn.EditingElementStyle> 
</DataGridComboBoxColumn> 

這意味着你可以綁定的ItemsSource的組合框的行(項目)的一些屬性。

有一些代碼來看看herehere。您還需要設置爲非編輯元素的項目源,如在此post