代码之家  ›  专栏  ›  技术社区  ›  Informagic

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

  •  1
  • Informagic  · 技术社区  · 7 年前

    这个问题与 MediaElement 关于这一点,我都读过 MediaElement.play() from within ViewModel MVVM pattern violation: MediaElement.Play() ,我同意他们的观点。

    但是假设我们使用了第三方程序集,比如 NAudio . 我们不需要找到一种方法将现有的XAML媒体控件交互功能插入到ViewModel中。相反,我们可以简单地使用,例如。, InteractionTrigger 在我们的视图中,在我们的ViewModel中订阅它,并对给定的媒体文件调用play命令。

    1 回复  |  直到 7 年前
        1
  •  8
  •   GazTheDestroyer    7 年前

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

    当你点击某个东西时,它仅仅是一个用户界面反馈的声音效果吗?留在视野中。

    它是一个音乐播放器应用程序,可以播放播放列表中的音乐吗?这是核心逻辑,属于虚拟机。

    如果我不确定什么东西住在哪里,我会想到我的应用程序上一个虚构的“视图”,它使用文本控制台而不是WPF。如果即使由控制台驱动,逻辑仍然存在,那么它就存在于VM中。