2

レガシー アプリの変換の問題。VB6 TextBox_KeyDown() を使用すると、キーを変更できます (たとえば、キーストロークを大文字に強制しますが、他にも多くの用途があります)。これはWPFでどのように行うことができますか?

私が見ることができる唯一の方法は、すべての TextBox キーストロークを処理しすぎることです。実際には、TextBox 編集を再実装します。私はむしろそこに行きたくない。

4

1 に答える 1

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();
        }
于 2010-05-19T12:40:16.837 に答える