View Model 应该公开加载的位图图像(BitmapImage 类)还是应该只提供文件名并让 WPF 控件加载图像或加载音频文件等。
View Model 在 MVVM 设计模式中的作用是正确的。
我问这个问题的原因是,如果允许 WPF 控件从本地存储加载图像,应用程序将很难监视正在使用的文件。
编辑: 当应用程序管理其文件资源(WinRT 或 WindowsPhone 应用程序)时会出现问题。当 WPF 控件加载文件时,应用程序无法管理文件资源,并且应用程序将间接依赖于 WPF 控件的生命周期,因为在 WPF 控件释放文件之前无法删除或修改文件。
此外,像 caliburn Micro 这样的框架也没有代码隐藏的概念。那么这些情况应该如何处理呢? 谢谢
最佳答案
就我个人而言,我喜欢将 URI 暴露给 View 模型中的图像(或资源)。
这有助于避免不良习惯 - 当您的团队时间紧迫时,很容易开始让不良代码(例如 UI 引用)滑入不应出现的位置。
因此,将图像或音频文件视为资源并为其提供 URI - 然后 View 可以绑定(bind)到它并以它认为合适的任何方式公开它。
也没有理由说明 View 中的代码无法通过 View 的 DataContext
访问公开的 URI。我总是让我的 View 模型实现一个特定于它们的接口(interface)(即 ViewModelA 将实现 IViewModelA),然后任何时候 View 中的一些代码需要访问它通过接口(interface)访问 View 模型,例如:
var myAudioUri = ((IViewModelA) DataContext).ThatAudioUri;
关于c# - ViewModel 是否应该公开诸如 BitmapImage 或 ImageSource 或音频文件缓冲区之类的东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20718746/