[英]Access MediaElement Control of Different Page from App.xaml.cs
我在Media.xaml
有一個MediaElement
控件,我想從App.xaml.cs
訪問它,如下所示:
private void OnSuspending(object sender, SuspendingEventArgs e)
{
var deferral = e.SuspendingOperation.GetDeferral();
//Media.MediaElement.Pause();
deferral.Complete();
}
誰能告訴我該怎么做?
首先,我向MediaElement
添加了x:FieldModifier="Public"
:
<MediaElement Name="meMedia" x:FieldModifier="Public"/>
然后,將此代碼添加到App.xaml.cs
:
if (rootFrame.Content.GetType.Name == "Media") {rootFrame.Content.mc.Pause();}
您可以創建一個公共財產:
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();
您可以使用以下代碼訪問當前的“媒體”頁面並暫停其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事件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.