我在MediaElement
中有一个Media.xaml
控件,我希望从App.xaml.cs
访问{x}}:
private void OnSuspending(object sender, SuspendingEventArgs e)
{
var deferral = e.SuspendingOperation.GetDeferral();
//Media.MediaElement.Pause();
deferral.Complete();
}
谁能告诉我怎么做?
答案 0 :(得分:1)
首先,我将x:FieldModifier="Public"
添加到MediaElement
:
<MediaElement Name="meMedia" x:FieldModifier="Public"/>
然后,将此代码添加到App.xaml.cs
:
if (rootFrame.Content.GetType.Name == "Media") {rootFrame.Content.mc.Pause();}
答案 1 :(得分:0)
您可以创建一个公共属性:
Media.xaml:
<MediaElement x:Name="mediaElement" ... />
Media.xaml.cs:
public MediaElement
{
get { return mediaElement; }
}
我不知道您的程序结构的详细信息,但应该有一种方法来获取当前活动的Media实例。如果您确实没有这样的引用(并且如果只有一个Media实例),则解决方法可能是创建静态实例访问器属性:
Media.xaml.cs:
public static Media Instance { get; private set; }
// constructor
public Media()
{
...
Instance = this;
}
现在你可以在App.xaml.cs中写这个:
Media.Instance.MediaElement.Pause();
答案 2 :(得分:0)
您可以使用以下代码访问当前的媒体页面并暂停其MediaElement:
var frame = (Frame)Window.Current.Content;
var page = frame.Content as Media;
if (page != null && page.MediaElement.CanPause) page.MediaElement.Pause();
但是,如果您打算在用户切换到其他应用时暂停播放媒体,则应使用Window.Current.CoreWindow.VisibilityChanged事件。