WPF MVVMを実行していて、次のXAMLコードがあります。
<TextBox Grid.Row="1" Name="Console" MinWidth="500" HorizontalAlignment="Stretch" AcceptsReturn="True" CharacterCasing="Upper" TextWrapping="WrapWithOverflow" Cursor="IBeam">
<TextBox.InputBindings>
<KeyBinding Command="{Binding Path=MyCommand}" CommandParameter="{Binding Text, ElementName=Console}" Key="Enter"/>
</TextBox.InputBindings>
</TextBox>
ViewModelのコマンドプロパティでEnterキーを押す場合(イベントハンドラーが追加されたコンストラクターで初期化されます):
private readonly MyCommand myCommand;
public ICommand MyCommand
{
get
{
return myCommand;
}
}
private void OnCommand(object sender, MyCommandEventArgs e)
{
<do something>
}
イベントハンドラーはallrightと呼ばれますが、Enterキーが押されてもTextBoxに戻されることはなく、改行は追加されません(カーソルは同じ行に留まります)。
イベントバブリングは、Enterキーの押下がTextBoxに渡されることを保証しませんか?