0

我有一个MediaElement控件Media.xaml,我想像这样访问App.xaml.cs它:

private void OnSuspending(object sender, SuspendingEventArgs e)
{
    var deferral = e.SuspendingOperation.GetDeferral();
    //Media.MediaElement.Pause();
    deferral.Complete();
}

谁能告诉我该怎么做?

4

3 回答 3

1

首先,我添加x:FieldModifier="Public"MediaElement

<MediaElement Name="meMedia" x:FieldModifier="Public"/>

然后,将此代码添加到App.xaml.cs

if (rootFrame.Content.GetType.Name == "Media") {rootFrame.Content.mc.Pause();}
于 2012-10-12T14:08:52.827 回答
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事件。

于 2012-10-11T23:08:36.093 回答
0

您可以创建一个公共属性:

媒体.xaml:

<MediaElement x:Name="mediaElement" ... />

媒体.xaml.cs:

public MediaElement
{
    get { return mediaElement; }
}

我不知道您的程序结构的详细信息,但是应该有一种方法可以获取当前活动的 Media 实例。如果您确实没有这样的引用(并且如果也只有一个 Media 实例),则一种解决方法可能是创建一个静态实例访问器属性:

媒体.xaml.cs:

public static Media Instance { get; private set; }

// constructor
public Media()
{
    ...
    Instance = this;
}

现在您可以在 App.xaml.cs 中编写:

Media.Instance.MediaElement.Pause();      
于 2012-10-11T10:54:14.037 回答