[英]How to modify a property of a received WPF routed event arg parameter before resuming its propagation?
我正在玩从WPF TextBox继承的自定义TextBox,试图了解WPF事件,所以我的问题如下: 当TextBox收到输入时,我希望它接收此输入的大小写反转版本 。 例如,如果我键入键(小写)“ a”,我希望文本框打印一个(大写)“ A”而不是(小写)“ a”。
我的(部分)解决方案是,在我的自定义TextBox中,通过重载方法OnPreviewTextInput
来拦截TextInput事件。 调用此方法时,我收到一个TextCompositionEventArgs
其Text
属性为“ a”。
因此,我的第一个反应就是将此Text属性更新为“ A”,如以下代码所示:
protected override void OnPreviewTextInput(TextCompositionEventArgs e)
{
e.Text = "A" ;
base.OnPreviewTextInput(e) ;
}
问题是e.Text是只读的,我发现没有简单的方法可以做到这一点(我进行了搜索,然后对TextComposition
和TextCompositionEventArgs
调整,试图从零构造一个,复制数据,等等)。
我错过了明显的事情吗? 有办法吗?
您无法更改事件数据。 那里的事件可以通知您某些事情已经发生或正在发生,并可能使您取消/处理它。
在这种情况下,最好的办法是将事件标记为Handled ,然后将Text附加到文本框。
如果只需要大写脚本,则可以使用CharacterCasing属性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.