我正在开发一个MVVM C#Metro应用程序,该应用程序使用媒体组件,特别是利用播放功能。
通常情况下,您似乎会绑定属性,但我需要进行诸如MediaElement.Play(source);
之类的调用。到目前为止,我提出的最好的解决方案是从视图模型中激发一个由代码处理的事件。
这实际上是最好的做法,还是有更复杂的方法?
关于MSDN
,有一系列有用的文章可以帮助您以更有效的方式做到这一点:
- 多媒体概述
- 音频和视频如何主题
注意:这些仍然是.Net 4的示例,但我敢打赌,在带有所有增强功能的Windows 8上运行它不需要付出太多努力。
我曾经尝试过用MVVM的方式在WPF中制作媒体播放器,根据我的经验,用MVVM方式制作媒体播放器会很痛苦。如果它比一直坚持MVVM更简单、更快,我建议在后面编写代码。如果你想让它看起来更干净,你可以稍后用一些依赖属性将它作为一个用户控件来分离。无论如何,关于媒体播放,你可以"也"做的是在你的视图模型中保留一个媒体播放器(媒体播放器),并创建一个指向该媒体播放器的视频刷,并用它在视图中显示你的视频。可以使用矩形或设置画笔的任何其他元素。由于你的媒体播放器是视图模型,现在你可以播放它,停止它,寻找它等
像这样的
var player = new MediaPlayer();
var myVideo = new VideoDrawing { Rect = new Rect(0, 0, 1, 1), Player = player };
var dBrush = new DrawingBrush(myVideo);
// Use drawing brush to fill a rectangle
rectangle.Fill = dBrush;