將對象列表綁定到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的原因。
你有任何建議如何正確處理這個問題嗎?
使用C#思考這個優雅的解決方案。它可以列出你'CellModel'的元數據 –
我認爲你誤解了這個問題。通過元數據,我的意思是'CellModel'中的屬性(如Enabled,Value等)。問題在於,在當前的解決方案中,CellModel沒有綁定到DataGridCell(只有Value屬性)。因此我無法通過DataGridCell樣式中的數據綁定來訪問'CellModel'。 –
爲什麼你不能將Value轉換爲CellModel? –