View Model应该公开加载的位图图像(BitmapImage类)还是应该只提供文件名,让WPF控件加载图像或加载音频文件。
View Model在MVVM设计模式中的作用是正确的。
我之所以这样问,原因是如果允许WPF控件从本地存储加载图像,则应用程序很难监视正在使用的文件。
编辑: 当应用程序管理它的文件资源(WinRT或WindowsPhone应用程序)时,会出现问题。当WPF控件加载文件时应用程序无法管理文件资源,应用程序将间接依赖于WPF控件的生命周期,因为在WPF控件释放文件之前无法删除或修改文件。
像caliburn Micro这样的框架也没有代码概念。那么如何处理这些案件呢? 谢谢
答案 0 :(得分:1)
在我的项目中,我们的ViewModel中有BitmapImage类型的属性。它使我们可以完全控制何时加载图像,并且它还允许我们对这些属性进行单元测试。
答案 1 :(得分:1)
我个人喜欢只从视图模型中将URI暴露给图像(或资源)。
这有助于避免不良习惯 - 当您的团队受到严格的时间限制时,很容易开始让错误的代码(例如UI引用)滑入他们不应该的地方。
因此,将图像或音频文件视为资源并为其提供URI - 然后视图可以绑定到该视图并以其认为合适的任何方式公开它。
也没有理由认为视图中的代码无法通过视图的DataContext
访问公开的URI。我总是让我的viewmodel实现一个特定于它们的接口(即ViewModelA将实现IViewModelA),然后每当视图中的某些代码需要访问viewmodel它通过接口执行它时,例如:
var myAudioUri = ((IViewModelA) DataContext).ThatAudioUri;