我正在开发一个使用媒体组件的MVVM C#Metro应用程序,特别是利用播放功能。
通常看起来你会绑定属性,但是我需要进行MediaElement.Play(source);
之类的调用以及类似的事情。到目前为止,我提出的最佳解决方案是从视图模型中触发由后面的代码处理的事件。
这实际上是最佳做法,还是有更复杂的方法?
答案 0 :(得分:0)
MSDN
上有一系列有用的文章可以帮助您以更有效的方式执行此操作:
注意:这些仍然是.Net 4的例子,但我敢打赌,使用Windows 8及其所有增强功能运行它不需要太多努力。
答案 1 :(得分:0)
我曾尝试过使用MVVM方式在WPF中做一次媒体播放器,我从经验中感受到的是,用MVVM方式做这件事真是太痛苦了。如果它总是比坚持MVVM更复杂和更快,我建议编写代码。如果你希望它看起来更干净,你可以稍后将它作为用户控件与一些依赖属性分开。 无论如何,关于媒体播放你可以“也”做的是在你的视图模型中保留一个媒体播放器(Media Player)并创建一个指向该媒体播放器的视频播放并用它在视图中显示你的视频。可以使用矩形或您为其设置绘图笔刷的任何其他元素。 由于您的媒体播放器是视图模型,现在您可以播放它,停止它,寻找它等等。
像这样,
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;