簡體   English   中英

WPF 允許子用戶控制來控制其父的特定按鍵事件

[英]WPF allow child user control to control specific keypress events of its parent

使用 WPF.Net5。 我有 3 個用戶控件。 VideoHost 是我制作的一個用戶控件,它承載了我制作的兩個獨立的子用戶控件,稱為 VideoControl 和 MediaElement。 Videocontrol 具有控制 MediaElement 操作的按鈕和 slider。 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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM