1

我正在开发一个使用媒体组件的 MVVM C#​​ Metro 应用程序,特别是利用播放功能。

通常,您似乎会绑定属性,但是我需要进行诸如此类的调用MediaElement.Play(source);。到目前为止,我想出的最佳解决方案是从视图模型中触发一个事件,该事件由后面的代码处理。

这实际上是最佳实践,还是有更复杂的方法?

4

2 回答 2

0

有一系列有用的文章MSDN可能会帮助您以更有效的方式做到这一点:

注意:这些仍然是 .Net 4 示例,但我敢打赌,在 Windows 8 及其所有增强功能上运行它不需要太多努力。

于 2012-07-23T16:26:08.690 回答
0

我曾经尝试过使用 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;
于 2012-07-27T09:43:08.017 回答