1. ホーム
  2. c#

[解決済み] Enterキーを押したときに起動するWPFテキストボックス用コマンド

2023-07-06 13:21:14

質問

簡単に Button をバインドするのはとても簡単です。 CommandVIEWMODEL というクラスがあります。同じようなバインディングを TextBox .

私の場合は TextBox で、これを Command を叩くと起動する 入力 を実行中に TextBox がフォーカスされている間に 現在、私は以下のハンドラで KeyUp イベントに対して以下のハンドラを使っていますが、見た目が悪いです...。 で、それを VIEWMODEL クラスに入れることができません。

private void TextBox_KeyUp(object sender, KeyEventArgs e)
{
    if (e.Key == System.Windows.Input.Key.Enter)
    {
        // your event handler here
        e.Handled = true;
        MessageBox.Show("Enter Key is pressed!");
    }
}

もっと良い方法はないでしょうか?

どのように解決するのですか?

アーリア人、すべてのWPFオブジェクトがコマンドをサポートしているわけではありません。ですから、もしそれをしたいのであれば、後ろのコードからビューモデルを呼び出すか(少し連鎖します)、それを切り離すためにいくつかのMVVMメッセージング実装を使用する必要があります。参照 MVVMライトメッセージングツールキット を参照してください。あるいは、このようなシンプルなトリガーを使用します。

<TextBox>
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="KeyUp">
            <i:InvokeDataCommand Command="{Binding MyCommand}"/>
        </i:EventTrigger>
    </i:Interaction.Triggers>
</TextBox>