在 FullWindows 模式下,MediaElement 的操作事件不会触发

Manipulation events of MediaElement not fire when on FullWindows mode

当我将播放器设置为非全屏时 (player.IsFullWindows = false),事件正常工作,但是当将播放器更改为全屏时,所有操作事件都不起作用。有人有解决办法吗?

                <MediaElement Name="player"
                              Margin="10,5" ManipulationCompleted="player_ManipulationCompleted"
                              ManipulationDelta="Grid_ManipulationDelta"
                              ManipulationMode="TranslateX"
                              >

我可以通过同时启用 IsFullWindow="True"AreTransportControlsEnabled="True" 来重现这种情况。我认为这是有道理的,因为当我们处于 Full Window 模式时,它将转到名为 FullWindowMediaRoot 的新层,而不是 媒体元素。在 FullWindowMediaRoot 中,它是 MediaTransportControls。您可以通过使用 Live Visual Tree 清楚地看到这一点,如下所示:

所以当我们处于 Full Window 模式时,我们需要处理 TransportControls 的操作事件,而不是 MediaElement 的操作事件,如下所示:

public MainPage()
    {
        this.InitializeComponent();
        player.TransportControls.ManipulationMode = ManipulationModes.TranslateX;
        player.TransportControls.ManipulationDelta += TransportControls_ManipulationDelta;
        player.TransportControls.ManipulationCompleted += TransportControls_ManipulationCompleted;

    }

    private void TransportControls_ManipulationCompleted(object sender, ManipulationCompletedRoutedEventArgs e)
    {

    }

    private void TransportControls_ManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
    {

    }

谢谢。