繁体   English   中英

如何在恢复传播之前修改接收到的WPF路由事件arg参数的属性?

[英]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事件。 调用此方法时,我收到一个TextCompositionEventArgsText属性为“ a”。

因此,我的第一个反应就是将此Text属性更新为“ A”,如以下代码所示:

protected override void OnPreviewTextInput(TextCompositionEventArgs e)
{
   e.Text = "A" ;
   base.OnPreviewTextInput(e) ;
}

问题是e.Text是只读的,我发现没有简单的方法可以做到这一点(我进行了搜索,然后对TextCompositionTextCompositionEventArgs调整,试图从零构造一个,复制数据,等等)。

我错过了明显的事情吗? 有办法吗?

您无法更改事件数据。 那里的事件可以通知您某些事情已经发生或正在发生,并可能使您取消/处理它。

在这种情况下,最好的办法是将事件标记为Handled ,然后将Text附加到文本框。

如果只需要大写脚本,则可以使用CharacterCasing属性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM