C# 键盘焦点未指定给区域

C# 键盘焦点未指定给区域,c#,wpf,prism,C#,Wpf,Prism,我有一个使用棱镜和mvvm灯光的项目。我有一个shell,它定义了两个区域,左区域和主区域 左侧区域填充了一个用户控件,它有一个包含两列的数据网格 主区域是一个用户控件,其中包含一个items控件,用于在画布上显示多行。它还有一个空白的数据网格,稍后将使用 我想做的是将键盘焦点放在画布上,这样我就可以使用ctrl+单击系统选择多行。我补充了以下内容: <Canvas x:Name="canvas"> <Canvas.Backgr

我有一个使用棱镜和mvvm灯光的项目。我有一个shell,它定义了两个区域,左区域和主区域

左侧区域填充了一个用户控件,它有一个包含两列的数据网格

主区域是一个用户控件,其中包含一个items控件,用于在画布上显示多行。它还有一个空白的数据网格,稍后将使用

我想做的是将键盘焦点放在画布上,这样我就可以使用ctrl+单击系统选择多行。我补充了以下内容:

 <Canvas x:Name="canvas">
                        <Canvas.Background>
                            <SolidColorBrush Color="White" Opacity="100"/>
                        </Canvas.Background>
                        <i:Interaction.Triggers>
                            <i:EventTrigger EventName="KeyDown">
                                <cmd:EventToCommand Command="{Binding KeyDownCommand}" PassEventArgsToCommand="True"/>
                            </i:EventTrigger>
                            ...
                        </i:Interaction.Triggers>
</canvas>

...
问题是画布没有被赋予键盘焦点。当我尝试按tab键时,左侧区域中的数据网格将更改单元格,这就是我如何知道的。当鼠标位于画布的区域时,有什么方法可以使画布键盘聚焦?

画布的属性的默认值为
false
。您应该将此属性设置为
true

<Canvas x:Name="canvas" Focusable="True">
    <!-- your xaml here -->
</Canvas>

我的第一个猜测是尝试将焦点设置在Canvas MouseEnter事件上。