WPF允许子用户控件控制其父控件的特定按键事件



使用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);
}

最新更新