我有一个包含Grid的Window,其中包含另一个带有InputBindings的Grid(在Enter键和Delete键上),以及其他控件中的只读DataGrid。
当DataGrid具有焦点时,InputBindings会停止触发它们的命令。在输入绑定可以工作之前,我被迫手动将焦点放到另一个控件上。
如何绕过此行为?我尝试使用几乎所有与输入/键盘相关的DataGrid属性而没有成功。
这里是XAML,尽管它并没有带来太大的影响:
<Grid>
<Grid.InputBindings>
<KeyBinding Key="Enter" Command="{Binding DoStuff}"/>
<KeyBinding Key="Delete" Command="{Binding UndoStuff}"/>
</Grid.InputBindings>
<!-- stuff... -->
<Grid >
<!-- more stuff... -->
<DataGrid IsReadOnly="True" ItemsSource="{Binding SomeProperty}" SelectedItem="{Binding SomeSelectedProperty, Mode=TwoWay}">
<DataGrid.Columns>
<!-- blah -->
</DataGrid.Columns>
</DataGrid>
</Grid>
</Grid>
答案 0 :(得分:0)
您可以处理PreviewGotKeyboardFocus
事件。
<DataGrid Name="grid" PreviewGotKeyboardFocus="grid_PreviewGotKeyboardFocus"
private void grid_PreviewGotKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
{
e.Handled = true;
}