81

ButtonWPF アプリCommandのをVIEWMODELクラスのにバインドするのは非常に簡単です。の同様のバインディングを実現したいと思いTextBoxます。

があり、フォーカスされているときにヒットすると起動するTextBoxにバインドする必要があります。現在、イベントに次のハンドラーを使用していますが、見栄えが悪く、クラスに配置できません。CommandEnterTextBoxKeyUpVIEWMODEL

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!");
    }
}

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

4

5 に答える 5

247

私は同じ問題に直面し、ここで解決策を見つけまし。コードサンプルは次のとおりです。

<TextBox>
  <TextBox.InputBindings>
    <KeyBinding Command="{Binding Path=CmdSomething}" Key="Enter" />
  </TextBox.InputBindings>
</TextBox>
于 2012-05-05T21:53:47.587 に答える
21

アーリア人、すべての 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>
于 2011-07-30T09:17:13.567 に答える