在Model-View-ViewModel体系结构WPF应用程序中实现ViewModel时,似乎有两个主要选择如何使其成为databindable.我已经看到了DependencyProperty用于View将要绑定的属性的实现,我已经看到了实现的ViewModel INotifyPropertyChanged.
我的问题是我应该何时优先选择其中一个?有任何性能差异吗?将ViewModel依赖项提供给WPF真的是个好主意吗?做出设计决定时还需要考虑什么?
有没有办法使用现有的WPF BooleanToVisibilityConverter转换器但是将False值转换为Hidden而不是默认的Collapsed,或者我应该自己编写?我正在进行一个项目,在这个项目中,做这样简单的事情会带来巨大的开销(共享的东西进入一个单独的解决方案,而重建/签入/合并过程是一个过度生长的变异庞然大物的过程),所以我更愿意,如果我可以将参数传递给现有参数,而不是跳过刚才提到的箍.
看起来很简单,但我无法找出任何方法来确定MediaElement的状态.某些状态有各种属性(例如IsBuffering)但我找不到任何状态,如Play,Pause等.Silverlight似乎有一个显示所有这些状态的CurrentState属性.
目前,我正在确定视频是否应该正在播放的方式是观看各种事件以及检查是否正在进行任何进展的计时器.
我是MediaElement和WPF的新手(我实际上只在WinForms应用程序中使用MediaElement).有什么我想念的吗?
我正在努力解决以下问题:
我正在使用MVVM patern构建WP8应用程序.我在view.xaml上有一个媒体元素,以及在我的viewmodel.cs中控制这个媒体元素的逻辑(例如,播放,停止,暂停和音量).
如何使用绑定从我的viewmodel在此媒体元素上播放声音.不破坏MvvM的目的和结构.
(PS:我看过以下帖子,但我不确定如何实现它?链接到帖子)
这个问题与— MediaElement无关,与此相关,我已经从ViewModel中读取了MediaElement.play()和违反MVVM模式的内容:MediaElement.Play(),我都同意。
但是请说我们使用的是第三方程序集,例如NAudio。我们不必寻找将现有XAML媒体控件的交互式功能插入我们的ViewModel的方法。相反,我们可以简单地InteractionTrigger在View中使用例如s,在ViewModel中对其进行订阅,然后在给定的媒体文件上调用play命令。
现在我的问题是:在MVVM模式下,这是否仍适合ViewModel?还是我们应该将其交给模型并从那里播放文件?