ViewModel中的MediaElement.play()

Bar*_*sen 6 c# binding mediaelement mvvm windows-phone-8

我正在努力解决以下问题:

我正在使用MVVM patern构建WP8应用程序.我在view.xaml上有一个媒体元素,以及在我的viewmodel.cs中控制这个媒体元素的逻辑(例如,播放,停止,暂停和音量).

如何使用绑定从我的viewmodel在此媒体元素上播放声音.不破坏MvvM的目的和结构.

(PS:我看过以下帖子,但我不确定如何实现它?链接到帖子)

asi*_*tis 10

您可以直接从视图模型绑定Media Element

在xaml中:

<ContentControl Content="{Binding MediaElementObject}"/>
Run Code Online (Sandbox Code Playgroud)

在ViewModel中:

private MediaElement _mediaElementObject;

public MediaElement MediaElementObject
{
   get { return _mediaElementObject; }
   set { _mediaElementObject = value;RaisePropertyChanged(); }
}
Run Code Online (Sandbox Code Playgroud)

OnNavigatedToOverride方法中,您可以创建它的新对象并可以注册它的事件.

MediaElementObject=new MediaElement();
Run Code Online (Sandbox Code Playgroud)

这样你就可以从viewmodel本身做所有事情了.

  • 我同意这会起作用,但这绝对不会被推荐.您永远不应该在ViewModel上安装UI elemnet.如果你想在Xamarin上使用相同的ViewModel(我们那里没有MediaElement),如果你使用单元测试怎么办? (3认同)
  • 伟大的答案Asitis .. :) (2认同)