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

Windows phone 在FullWindows模式下,MediaElement的操作事件不会触发,windows-phone,winrt-xaml,win-universal-app,windows-10-universal,windows-10-mobile,Windows Phone,Winrt Xaml,Win Universal App,Windows 10 Universal,Windows 10 Mobile,当我将播放机设置为非全屏(player.IsFullWindows=false)时,事件正常工作,但将播放机更改为全屏时,所有操纵事件均不工作。有人有解决办法吗 <MediaElement Name="player" Margin="10,5" ManipulationCompleted="player_ManipulationCompleted"

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

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

我可以通过同时启用IsFullWindow=“True”AreTransportControlsEnabled=“True”来重现此场景。我认为这是有意义的,因为当我们处于全窗口模式时,它将转到名为FullWindowMediaRoot的新层,而不是MediaElement。在FullWindowMediaRoot中,它是MediaTransportControls。通过使用实时可视化树,您可以清楚地看到这一点,如下所示:

因此,当我们处于全窗口模式时,我们需要处理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)
    {

    }

谢谢。

我可以通过同时启用IsFullWindow=“True”AreTransportControlsEnabled=“True”来重现此场景。我认为这是有意义的,因为当我们处于全窗口模式时,它将转到名为FullWindowMediaRoot的新层,而不是MediaElement。在FullWindowMediaRoot中,它是MediaTransportControls。通过使用实时可视化树,您可以清楚地看到这一点,如下所示:

因此,当我们处于全窗口模式时,我们需要处理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)
    {

    }

谢谢。

谢谢你的帮助,我还有一个问题:我在这里回答了:谢谢你的帮助,我还有一个问题:我在这里回答了: