用户控件上的WPF Keydown事件不工作



Keydown, Perview Keydown, Keyup Perview Keyup这些似乎都不起作用。我甚至不能点击到我的图像

下面是我的代码:
<Viewbox Width="auto" Height="auto" >
<Border ClipToBounds="True">
<Canvas Height="50" Width="50" x:Name="comicbookBorder"
MouseWheel="comicbookSource_OnMouseWheel"
MouseMove="comicbookSource_OnMouseMove"
MouseDown="CanvasGridScreen_MouseDown"
Mouse.MouseUp="CanvasGridScreen_MouseUp"
MouseLeftButtonUp="comicbookSource_OnMouseLeftButtonUp">

<Image x:Name="comicbookSource"
PreviewKeyUp="comicbookBorder_KeyDown"
Width="{Binding Path=ActualWidth, ElementName=comicbookBorder}"
Height="{Binding Path=ActualHeight, ElementName=comicbookBorder}"
Stretch="Uniform" Loaded="comicbookSource_Loaded"/>
</Canvas>
</Border>
</Viewbox>

所有其他事件工作,但没有一个键的上下将工作。如果我添加一个文本框,然后工作,但我试图显示一个图像,我不希望在我的图像中间有一个随机的文本框,你必须点击。

查看有关键盘焦点的文章,它揭示了问题的本质。简而言之,Image is的Focusable属性默认设置为false。为了允许元素以任何方式获得键盘焦点,应该将其设置为true。然后使用Keyboard.Focus方法管理图像的焦点状态。这应该可以很好地将焦点传递给鼠标点击:

<Image Focusable="True" PreviewKeyDown="OnKeyDown" MouseDown="OnMouseDown"... />

然后在代码后面:

private void OnMouseDown(object sender, MouseButtonEventArgs e)
{
Keyboard.Focus(sender as Image);
}

最新更新