1

我有一个带有 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 上的“编辑”控件,这样它就不会干扰我返回单元格编辑时生成的新控件;我能怎么做?

4

0 回答 0