0

我有一个窗口,其中包含一个网格,其中包含另一个带有 InputBindings 的网格(在 Enter 和 Delete 键上),以及一个只读 DataGrid。

当 DataGrid 获得焦点时,InputBindings 停止触发它们的命令。然后,在 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>
4

1 回答 1

0

你可以处理PreviewGotKeyboardFocus事件。

<DataGrid Name="grid"  PreviewGotKeyboardFocus="grid_PreviewGotKeyboardFocus"

 private void grid_PreviewGotKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
    {
        e.Handled = true;
    }
于 2015-03-18T14:25:00.033 回答