3

ViewModel で MVVM を使用して KeyDown イベントを処理する方法を知りたいです。

TextBox があり、ユーザーが数字ではないキーを押すと、入力が許可されません。私は通常、このようなコードビハインドでそれを行います(完全なコードではなく、簡単な例です):

private void textBox1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{

    // Determine whether the keystroke is a number from the top of the keyboard.
    if (e.KeyCode < Keys.D0 || e.KeyCode > Keys.D9)
    {
        e.Handled = true;
    }
}

今、私はコマンドを使用して ViewModel にこれを何らかの形で配置したいと考えています。私はMVVMが初めてで、現在バインディングのみを使用しています(これは正常に機能します:))が、コマンドの使用方法がまったくわかりません...

私の TextBox は次のようになります。

<TextBox Text="{Binding MyField, Mode=TwoWay}"/>

ビューモデル:

private string _myfield;
public string MyField{
  get { return _myfield; }
  set { 
    _myfield= value;
    RaisePropertyChanged( ()=>MyField)
  }
}

しかし、セッターは呼び出されるだけで、TextBoxを離れると入力されたキーにアクセスできません。

4

3 に答える 3