WPF CellEditingTemplate и дублированные события

У меня есть WPF DataGrid с DataGridTemplateColumn вроде этого:

<DataGridTemplateColumn IsReadOnly="False">
<DataGridTemplateColumn.CellTemplate>
    <DataTemplate>
        <TextBlock
            Text="{Binding Path=MyProperty, Mode=OneWay}" />
    </DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
    <DataTemplate>
        <TextBox
            Text="{Binding Path=MyProperty, UpdateSourceTrigger=PropertyChanged}"
            TextChanged="ctl_TextChanged" />
    </DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>

Я заметил, что каждый раз, когда я захожу в редактирование ячейки, генерируется новый элемент управления textbox и, следовательно, если я начинаю вводить символ, событие TextChanged вызывается несколько раз... по одному разу для каждого экземпляра сгенерированного элемента управления!

Пример проекта для воспроизведения проблемы: TestEditingTemplate_4.5.2

Я использовал событие TextChanged только для примера, но проблема может возникнуть и с другими событиями (например, событиями, определенными в UserControl)

Есть ли способ избежать такого поведения? Я хочу уничтожить элемент управления "edit" в CellEditEnding, чтобы он не мешал новому элементу управления, сгенерированному при возвращении к редактированию ячейки; Как я могу сделать?

0 ответов

Другие вопросы по тегам