簡體   English   中英

從App.xaml.cs訪問不同頁面的MediaElement控件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM