在MVVM中,播放来自Model或ViewModel的媒体文件?

Inf*_*gic 2 c# wpf mvvm

这个问题与— MediaElement无关,与此相关,我已经从ViewModel中读取了MediaElement.play()违反MVVM模式的内容:MediaElement.Play(),我都同意。

但是请说我们使用的是第三方程序集,例如NAudio。我们不必寻找将现有XAML媒体控件的交互式功能插入我们的ViewModel的方法。相反,我们可以简单地InteractionTrigger在View中使用例如s,在ViewModel中对其进行订阅,然后在给定的媒体文件上调用play命令。

现在我的问题是:在MVVM模式下,这是否仍适合ViewModel?还是我们应该将其交给模型并从那里播放文件?

Gaz*_*yer 5

我要说的是,这完全取决于媒体文件的性质及其与应用程序核心逻辑的关系。

当您单击某物时,它只是播放UI反馈声音效果吗?保持视野。

它是播放播放列表中音乐的音乐播放器应用吗?这是核心逻辑,属于VM。

如果不确定某个地方的内容,我会考虑使用文本控制台而不是WPF的应用程序中的虚构“视图”。如果即使由控制台驱动,逻辑仍然存在,则它存在于VM中。