使用WPF.Net5。我有3个用户控件。VideoHost是我制作的一个用户控件,它托管我制作的两个独立的子用户控件,名为VideoControl&MediaElement。Videocontrol具有控制MediaElement操作的按钮和滑块。Videocontrol上的按钮有自定义的路由事件,这些事件会弹出到VideoHost,在那里他们在MediaElement上执行操作,如播放停止暂停等。我的问题是,我还希望某些按键功能在MediaElement上执行操作。例如箭头键。我想把按键事件的代码放在VideoControl中,但它只有在VideoControl有焦点时才有效。我如何将Keypress的代码保存在VideoControl中,允许通过XML标记/属性/事件在VideoHost中进行连接,无论VideoControl是否有焦点,这些标记都将处理被按下的特定键。
VideoHost是我制作的一个用户控件,它托管了我制作的两个独立的子用户控件,名为VideoControl&MediaElement
根据此描述,您的.xaml
与此类似。。
<UserControl x:Class="VideoHost" KeyDown="VideoHost_OnKeyDown">
<StackPanel Orientation="Vertical">
<views:MediaElement x:Name="MediaElement"/>
<views:VideoControl x:Name="VideoControl"/>
</StackPanel>
</UserControl x:Class="VideoHost">
您可以在VideoHost
中处理KeyDown
事件,并调用VideoControl
中的函数
private void VideoHost_OnKeyDown(object sender, KeyEventArgs e)
{
// MediaElement.InvokeMyKeypressCode(e);
VideoControl.InvokeMyKeypressCode(e);
}