Почему не ловится событие клавиши в WPF?

У меня есть Canvas на котором размещаются блоки, которые можно перемещать. Это я не много ввести в курс дела.

Я хочу обработать нажатие какой-либо клавиши. Я считаю логичным ловить его на самом canvas. Ниже приведен XAML код окна, с именно этим Canvas.

<Window x:Class="TPP.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:TPP"
    xmlns:vm="clr-namespace:TPP.ViewModel"
    mc:Ignorable="d"
    Title="TPP" Height="450" Width="800">
<Window.DataContext>
    <vm:ApplicationViewModel/>
</Window.DataContext>
<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="auto"/>
        <RowDefinition/>
    </Grid.RowDefinitions>

    <Grid.ColumnDefinitions>
        <ColumnDefinition />
        <ColumnDefinition Width="150"/>
    </Grid.ColumnDefinitions>
    
    <ScrollViewer Background="LightGray" Grid.Row="1" Grid.Column="0" HorizontalScrollBarVisibility="Visible">
        <Border DataContext="{Binding Path=CanvasViewModel}" Width="{Binding Path=Width}" Height="{Binding Path=Height}" BorderBrush="Gray" BorderThickness="1">
            <Border.LayoutTransform>
                <ScaleTransform ScaleX="{Binding Scale}" ScaleY="{Binding Scale}"/>
            </Border.LayoutTransform>
            <Canvas x:Name="MainCanvas" Background="White" Focusable="True" KeyDown="MainCanvas_KeyDown" IsKeyboardFocusedChanged="MainCanvas_IsKeyboardFocusedChanged"/>
        </Border>
    </ScrollViewer>

</Grid>

Нужный Canvas (ну он здесь только один) находится в ScrollViewer. Свойства Focusable установлено. Тут этот обработчик не показан, но потом добавляется обработчик, который при нажатии ЛКМ делает фокус клавиатуры на Canvas, событие изменения фокуса клавиатуры при этом (IsKeyboardFocusChanged) срабатывает несколько раз (при клике мышкой по canvas), и в конце устанавливается именно на true, но все равно события нажатия клавиши не срабатывает.

Подскажите в чем может быть проблема?


Ответы (0 шт):