У меня есть окно, содержащее сетку, которая содержит еще одну сетку с InputBindings (клавишами Enter и Delete), а среди других элементов управления - DataGrid только для чтения.Как предотвратить 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>
Как насчет установки свойства IsEnabled? –
@Mike Nah, это было бы слишком легко. : p Причина в том, что мне все еще нужно иметь возможность выбирать строку в datagrid, потому что команда UndoStuff удаляет ее. – Kilazur