レガシー アプリの変換の問題。VB6 TextBox_KeyDown() を使用すると、キーを変更できます (たとえば、キーストロークを大文字に強制しますが、他にも多くの用途があります)。これはWPFでどのように行うことができますか?
私が見ることができる唯一の方法は、すべての TextBox キーストロークを処理しすぎることです。実際には、TextBox 編集を再実装します。私はむしろそこに行きたくない。
レガシー アプリの変換の問題。VB6 TextBox_KeyDown() を使用すると、キーを変更できます (たとえば、キーストロークを大文字に強制しますが、他にも多くの用途があります)。これはWPFでどのように行うことができますか?
私が見ることができる唯一の方法は、すべての TextBox キーストロークを処理しすぎることです。実際には、TextBox 編集を再実装します。私はむしろそこに行きたくない。
非常に迅速で汚い解決策。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();
}