2010-05-10 68 views
2

舊版應用程序轉換問題。 VB6 TextBox_KeyDown()允許更改密鑰(例如,強制按鍵爲大寫,但還有許多其他用途)。這怎麼能在WPF中完成?更改WPF KeyDown中的密鑰

我能看到的唯一方法就是處理所有的TextBox按鍵。實際上,重新實現TextBox編輯。我寧願不去那裏。

回答

0

非常快速和骯髒的解決方案。假設你想要將TextBox.Text的值綁定到某個東西上,你可以編寫一個轉換器,它只需在字符串上調用ToUpper()。

在下面的示例中,文本框綁定到它自己。這很可能不是你想要的產品,但它可能會啓發。

<local:UpperConverter x:Key="toUpperConverter" /> 

...

<TextBox Text="{Binding RelativeSource={RelativeSource Mode=Self}, 
           Path=Text, Mode=OneWay, Converter={StaticResource toUpperConverter}, 
           UpdateSourceTrigger=PropertyChanged}" /> 

...

class UpperConverter:IValueConverter 
    { 
     public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
     { 
      return value.ToString().ToUpper(); 
     } 
+0

很有想象力的做法。我不相信這會適用於我的情況。我需要從邏輯上改變e.Key,而不是直觀地改變Text屬性。 – BSalita 2010-05-23 18:05:20

+0

我明白了,但除非我錯過了某些東西,否則可以使用上面顯示的轉換器,只是您不綁定到TextBox本身,而是綁定到您成爲UpperStrokes的值。 你當然可以編輯實際的按鍵筆畫,但在我看來(再次,如果我沒有丟失某些東西)是過度工作。你可以發佈一些具體的場景/示例和可能的一些代碼? – ThomasAndersson 2010-05-23 22:23:42

-1

您可以設置CharacterCasing到上層。

<TextBox CharacterCasing="Upper"></TextBox> 

MSDN Solution

+0

你回答了這個例子,而不是問題。 – BSalita 2016-04-01 19:27:23