在我的 Silverlight 4DataGrid
控件中,我想附加一个非常简单的行为,它在按键上执行自定义命令 - 实际上,在按 ENTER 键时提交 DataGrid 中的选定项目。
虽然行为实际上有效(请参阅我的代码...
//.... in "OnAttached()..."
this.AssociatedObject.AddHandler(Control.KeyDownEvent, new KeyEventHandler(OnKeyDown), true);
private void OnKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
InvokeCommand();
}
}
...)我有一个问题,DataGrid 似乎自己处理 ENTER 键按下并继续到下一行。显然,发生的情况是提交了错误的行,因为当我处理按键时,行选择已经改变。
这是 XAML:
<data:DataGrid
AutoGenerateColumns="False"
IsReadOnly="True"
ItemsSource="{Binding Path=Data}"
SelectedItem="{Binding SelectedRow, Mode=TwoWay}">
<data:DataGrid.Columns>
<data:DataGridTextColumn Binding="{Binding A}" />
<data:DataGridTextColumn Binding="{Binding B}" />
<data:DataGridTextColumn Binding="{Binding C}" />
</data:DataGrid.Columns>
<i:Interaction.Behaviors>
<behaviors:EnterBehavior Command="{Binding CommitCommand}" />
</i:Interaction.Behaviors>
</data:DataGrid>
你能告诉我如何防止默认的 ENTER 事件吗?