[英]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.