Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WPF CellEditingTemplate和重复事件_Wpf_Events_Binding_Datagridtemplatecolumn_Celleditingtemplate - Fatal编程技术网

WPF CellEditingTemplate和重复事件

WPF CellEditingTemplate和重复事件,wpf,events,binding,datagridtemplatecolumn,celleditingtemplate,Wpf,Events,Binding,Datagridtemplatecolumn,Celleditingtemplate,我有一个带有DataGridTemplateColumn的WPF DataGrid,如下所示: <DataGridTemplateColumn IsReadOnly="False"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <TextBlock Text="{Binding Path=MyProperty, Mode=OneWay}" /&g

我有一个带有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>

我注意到,每次我进入单元格编辑时,都会生成一个新的textbox控件,因此,如果我开始键入一个字符,TextChanged事件会被调用几次……对于生成的控件的每个实例调用一次

复制该问题的示例项目:

例如,我只使用了TextChanged事件,但问题也可能发生在其他事件中(例如,UserControl中定义的事件)

有没有办法避免这种行为?
我希望销毁CellEditEnding上的“edit”控件,这样它就不会干扰我返回CellEditEnding时生成的新控件;如何操作?

每次按键只能调用一次文本更改。你的问题是不可复制的。我创建了一个简单的应用程序,其中包含DataGrid和DataGridTemplateColumn…问题是可复制的;如果编辑同一单元格2次,则每次按键时事件都会被调用2次……以此类推(.NET 4.0)我无法复制它。虽然我不在.NET 4.0上,但官方支持的最旧版本是4.5.2,因此您可能应该更新。我尝试了4.5.2,但没有任何更改…这里有一个示例项目:TextChanged只应在每次按键时调用一次。你的问题是不可复制的。我创建了一个简单的应用程序,其中包含DataGrid和DataGridTemplateColumn…问题是可复制的;如果编辑同一单元格2次,则每次按键时事件都会被调用2次……以此类推(.NET 4.0)我无法复制它。虽然我不在.NET 4.0上,但官方支持的最旧版本是4.5.2,因此您可能应该进行更新。我尝试了4.5.2,但没有任何更改…下面是示例项目: