Событие DataGrid.BeginningEdit не срабатывает, когда я использую TextBox в DataGridTemplateColumn.CellTemplate
Я хочу показать данные в сетке данных. И только некоторые из ячеек в столбце могут быть отредактированы. Итак, для этой цели я определил шаблон столбца для одного столбца, как показано ниже:
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBox IsReadOnly="{Binding IsReadOnly}" BorderThickness="0" Text="{Binding Value, UpdateSourceTrigger= LostFocus}"></TextBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
Поэтому, в зависимости от свойства только для чтения объекта модели, ячейка будет редактируемой или нет. Это работает отлично. Но теперь я хочу выполнить некоторую операцию, когда пользователь начинает редактировать ячейку, поэтому я создал обработчик для события BeginningEdit для DataGrid. Но обработчик события не вызывается. Я заменил TextBox на DataGridCell. Теперь обработчик события вызывается, но я не могу редактировать значение ячейки. Итак, как мне решить эту проблему.
1 ответ
Это шаблонредактирования ячеек, который применяется, когда ячейка переводится в режим редактирования, то есть когда BeginningEdit
событие происходит, поэтому вы должны добавить свой TextBox
к этому:
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Value}"></TextBlock>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<TextBox IsReadOnly="{Binding IsReadOnly}" BorderThickness="0"
Text="{Binding Value, UpdateSourceTrigger= LostFocus}"></TextBox>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>