2015-06-17 119 views
2

將對象列表綁定到DataGrid的基礎知識在這裏討論How do I bind a List<CustomObject> to a WPF DataGrid?將customObject綁定到DataGrid

我的設置稍微複雜一些: 我有RowModels其中包含該行的元數據以及CellModels的列表。 CellModels又包含一些元數據和一個Value屬性,它顯示在dataGrid中。

爲了填補我的DataGrid我沒有通過

<DataGridTextColumn Binding="{Binding CellModelList[0].Value, UpdateSourceTrigger= PropertyChanged}"/> 
<DataGridTextColumn Binding="{Binding CellModelList[1].Value, UpdateSourceTrigger= PropertyChanged}"/> 
... 

這樣設置

ItemsSource="{Binding RowModelList, UpdateSourceTrigger= PropertyChanged}" 

,並映射列一個接一個,我也可以指定每列的columnHeader和修改文稿的每列。

但是我想在我的DataGridCell -Style中使用DataTrigger來訪問我的CellModels的元數據。

這個工作,但..好

當然我可以創建一個樣式爲每列像

<Style x:Key="CellStyleColumnZero" TargetType="DataGridCell"> 
    <Style.Triggers> 
     <DataTrigger Binding="{Binding CellModelList[0].Enabled}" Value="False"> 
      <Setter Property="IsEnabled" Value="False"/> 
     </DataTrigger> 
    </Style.Triggers> 
</Style> 

問:

我需要設置的屬性DataGridCell取決於我的CellModel中的元數據。

我相信有一個更優雅的解決方案(比上面顯示的那個)不需要自定義每一列。我仍然需要手動更改單列(尤其是ColumnHeaders),這就是爲什麼我首先手動聲明DataGridTextColumns的原因。

你有任何建議如何正確處理這個問題嗎?

+0

使用C#思考這個優雅的解決方案。它可以列出你'CellModel'的元數據 –

+0

我認爲你誤解了這個問題。通過元數據,我的意思是'CellModel'中的屬性(如Enabled,Value等)。問題在於,在當前的解決方案中,CellModel沒有綁定到DataGridCell(只有Value屬性)。因此我無法通過DataGridCell樣式中的數據綁定來訪問'CellModel'。 –

+0

爲什麼你不能將Value轉換爲CellModel? –

回答