0

コードビハインドなしでキーダウンイベントをフックすることに少し問題があります!だから、私たちはコンボボックスを持っています

<ComboBox Height="20" Width="auto"
                  ItemsSource="{Binding AlignComboItems}"
                  SelectedValue="{Binding SelectedComboItem, Mode=TwoWay}"
                  SelectedValuePath="Key" DisplayMemberPath="Value"

                  SelectedItem="{Binding SelectedItem}"
                  x:Name="cmbBoxAlign">
</ComboBox>

といくつかのTextBox。

<TextBox Text={Binding SomeSource}></TextBox>

(たとえば)ComboBoxの最後の要素を選択するためにTextBoxでキーダウンイベントをキャッチするにはどうすればよいですか?ユーザー入力をフックする必要があるため、TextBoxDataSourceプロパティの変更を使用できません。

4

2 に答える 2

4

Expression Blend SDKをインストールしてもかまわない場合は、テキストボックスでこれを実行できるはずです。

<i:Interaction.Triggers>
    <i:EventTrigger EventName="KeyUp">
        <i:InvokeCommandAction Command="{Binding Path=TheCommand}" />
    </i:EventTrigger>
</i:Interaction.Triggers>

System.Windows.Interactivityxamlに次の名前空間への参照を追加した後

xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"

Expression SDKfor4.0へのリンク

http://www.microsoft.com/en-us/download/details.aspx?id=10801

于 2013-02-13T06:47:39.440 に答える
0

テキストボックスにキーが押されるたびにビューモデルでコードを起動する場合は、バインディングを少し変更する必要があります。

<TextBox Text="{Binding SomeSource, UpdateSourceTrigger=PropertyChanged}"

次に、ビューモデルでセッターが呼び出されます。

private string _someSource;
public string SomeSource{
  get { return _someSource; }
  set { 
    //this will fire on key down
    _someSource= value;
    //based off the value you can set SelectedComboItem accordingly
    OnPropertyChanged( "SomeSource" );
  }
}

また、ビューモデルにINotifyPropertyChangedが設定されていることを確認してください。

于 2013-02-12T22:30:24.373 に答える