C#UWP MediaPlayerElement交互模式事件?

时间:2018-01-17 18:58:56

标签: c# events uwp

Microsoft Player Framework有一个OnIsInteractiveChanged事件,因此我们可以确定是否正在显示控件。我似乎无法为MediaPlayerElement找到类似的事件。是否存在类似的事件,当控件可见时会被触发?

1 个答案:

答案 0 :(得分:0)

  

是否存在类似的事件,当控件可见时会被触发?

目前,没有此类事件可确定是否正在显示控件。它只提供了一种使用一个新属性ShowAndHideAutomatically和两个新方法Show()Hide()来管理此方法的简单方法。

如果您确实需要此功能,可以自定义MediaTransportControls并创建计时器以确定正在显示控件。

您将找到ControlPanelFadeIn故事板以使控件淡入。如果控制面板淡入,ControlPanel_ControlPanelVisibilityStates_Border不透明度将变为0。 你可以创建一个计时器来确定这个值。

public sealed class CustomMediaTransportControls : MediaTransportControls
{
    private DispatcherTimer KeepTransportControlsVisibleTimer;
    private Border ControlPanelGrid;

    public CustomMediaTransportControls()
    {
        this.DefaultStyleKey = typeof(CustomMediaTransportControls);
        KeepTransportControlsVisibleTimer = new DispatcherTimer();
        KeepTransportControlsVisibleTimer.Interval = TimeSpan.FromMilliseconds(200);
        KeepTransportControlsVisibleTimer.Tick += KeepTransportControlsVisibleTimer_Tick;
        KeepTransportControlsVisibleTimer.Start();
    }

    private void KeepTransportControlsVisibleTimer_Tick(object sender, object e)
    {
        var opacity = ControlPanelGrid.Opacity;
        System.Diagnostics.Debug.WriteLine(opacity);
         // do some stuff
    }  

    //overriding OnApplyTemplate
    protected override void OnApplyTemplate()
    {
        ControlPanelGrid = GetTemplateChild("ControlPanel_ControlPanelVisibilityStates_Border") as Border; 
        base.OnApplyTemplate();  
    }
}

要创建自定义传输控件,请检查this