Обсуждаются основы привязки списка объектов к DataGrid How do I bind a List<CustomObject> to a WPF DataGrid?.Bind customObject to DataGrid
Моя установка немного сложнее: У меня есть RowModels
, которые содержат метаданные для строки, а также список CellModels
. снова содержат некоторые метаданные и свойство Value
, которое показано в dataGrid.
Чтобы заполнить мой DataGrid я установить
ItemsSource="{Binding RowModelList, UpdateSourceTrigger= PropertyChanged}"
и отображаются столбцы один за другим через
<DataGridTextColumn Binding="{Binding CellModelList[0].Value, UpdateSourceTrigger= PropertyChanged}"/>
<DataGridTextColumn Binding="{Binding CellModelList[1].Value, UpdateSourceTrigger= PropertyChanged}"/>
...
Таким образом, я мог бы также указать ColumnHeader для каждого столбца и изменить представление каждого столбца.
Однако я хотел был бы использовать DataTrigger
в моем DataGridCell
-Style для доступа к метаданным моих 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' –
Я думаю, вы неправильно поняли вопрос. По метаданным я имел в виду свойства (такие как Enabled, Value и т. Д.) Внутри 'CellModel'. Проблема в том, что в текущем решении «CellModel» не привязан к DataGridCell (существует только свойство «Value»). Таким образом, я не могу получить доступ к 'CellModel' через привязку данных изнутри' DataGridCell'-Style. –
Почему вы не можете просто присвоить значение CellModel? –