0

私はこのようにアクセスしたいMediaElementコントロールを持っています:Media.xamlApp.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

パブリックプロパティを作成できます。

Media.xaml:

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

Media.xaml.cs:

public MediaElement
{
    get { return mediaElement; }
}

プログラム構造の詳細はわかりませんが、現在アクティブなMediaインスタンスを取得する方法があるはずです。そのような参照が実際にない場合(およびMediaインスタンスが1つしかない場合)、回避策は静的インスタンスアクセサープロパティを作成することです。

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 に答える
0

次のコードを使用して、現在のMediaページにアクセスし、その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 に答える