我有一个带有 DataGridTemplateColumn 的 WPF DataGrid,如下所示:
<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>
我注意到,每次我进入单元格编辑时,都会生成一个新的文本框控件,因此,如果我开始输入一个字符,TextChanged 事件会被调用多次……为每个生成的控件实例调用一次!
重现问题的示例项目:TestEditingTemplate_4.5.2
我仅使用了 TextChanged 事件,但其他事件也可能发生此问题(例如,在 UserControl 中定义的事件)
有没有办法避免这种行为?我希望破坏 CellEditEnding 上的“编辑”控件,这样它就不会干扰我返回单元格编辑时生成的新控件;我能怎么做?