c# - Enterキーを押したときに起動するWPF TextBoxのコマンド




.net icommand (3)

Aryan、すべてのWPFオブジェクトがコマンドをサポートするわけではありません。 ですから、もしあなたがそうしたくなければ、あなたのコードからあなたのビューモデルを呼び出すか(ちょっと結合したもの)、またはそれを切り離すためにMVVM Messaging実装を使う必要があります。 MVVM Light Messagingツールキットの例を参照してください。 または、次のような単純な使用トリガー:

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

WPFアプリケーションのButton VIEWMODELクラスのCommandにバインドするのは非常に簡単です。 私はTextBox同様のバインディングを達成したいと思いTextBox

私はTextBoxを持っており、 TextBoxがフォーカスされている間にEnterキー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!");
    }
}

これを行うより良い方法はありますか?


trueをAcceptReturnプロパティに設定できます。

 <TextBox AcceptsReturn="True" />

私は同じ問題に直面してhereで解決策を見つけましhere 。ここにコードサンプルがあります:

<TextBox>
  <TextBox.InputBindings>
    <KeyBinding Command="{Binding Path=CmdSomething}" Key="Enter" />
  </TextBox.InputBindings>
</TextBox>




icommand