У меня есть DataGrid
со столбцом DataGridComboBox
, который работает нормально.Он правильно связывается со списком элементов, правильно отображает выбранный элемент, правильно выбирает элемент и правильно связывает идентификатор выбранного элемента с базовой моделью строки.
Это выглядит так:
<DataGridComboBoxColumn
x:Name="AssetColumn"
Width="3*"
DisplayMemberPath="Item"
Header="Item"
ItemsSource="{Binding Data.AssetDescriptions, Source={StaticResource proxy}}"
SelectedValueBinding="{Binding AssetDescriptionID}"
SelectedValuePath="AssetDescriptionID" />
Я пытаюсь добиться того же с помощью DataGridTemplateColumn и обычного поля со списком.Мои усилия:
<DataGridTemplateColumn Header="ItemTemplate" Width="3*">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox
DisplayMemberPath="Item"
ItemsSource="{Binding Data.AssetDescriptions, Source={StaticResource proxy}}"
SelectedValue="{Binding AssetDescriptionID, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
SelectedValuePath="AssetDescriptionID" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
К сожалению, этот не соответствует интерфейсу IEditable<T>
, который реализуют объекты Asset.Следовательно, обычные механизмы редактирования, которые вы обычно используете в DataGrid, такие как отмена, не будут работать для этого столбца.
Есть ли способ написать это так, чтобы он работал так, как он долженк интерфейсу IEditable<T>
?
Примечание: Я знаю, что мне, вероятно, нужен CellEditingTemplate
, чтобы заставить это работать должным образом, но я не уверен, какидти об этом.Я также могу поместить то же поле со списком в CellEditingTemplate
, но я не могу понять, как заставить столбец переключаться в режим редактирования, когда он получает фокус, и если я только помещаю шаблон данных поля со списком вCellEditingTemplate
, данные не отображаются в столбце.