簡體   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