【问题标题】:Manipulation events of MediaElement not fire when on FullWindows mode在 FullWindows 模式下不会触发 MediaElement 的操作事件
【发布时间】:2016-03-23 15:13:22
【问题描述】:
当我将播放器设置为不全屏时(player.IsFullWindows = false),事件正常工作,但当将播放器更改为全屏时,所有操作事件都不起作用。谁有解决方案?
<MediaElement Name="player"
Margin="10,5" ManipulationCompleted="player_ManipulationCompleted"
ManipulationDelta="Grid_ManipulationDelta"
ManipulationMode="TranslateX"
>
【问题讨论】:
标签:
windows-phone
winrt-xaml
win-universal-app
windows-10-universal
windows-10-mobile
【解决方案1】:
我可以通过启用 IsFullWindow="True" 和 AreTransportControlsEnabled="True" 来重现这种情况。我认为这是有道理的,因为当我们处于全窗口模式时,它将转到名为 FullWindowMediaRoot 的新层,而不是 MediaElement。在FullWindowMediaRoot里面,就是MediaTransportControl。您可以使用 Live Visual Tree 清楚地看到这一点,如下所示:
所以当我们处于全窗口模式时,我们需要处理 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)
{
}
谢谢。