gpt4 book ai didi

c# - ViewModel 是否应该公开诸如 BitmapImage 或 ImageSource 或音频文件缓冲区之类的东西?

转载 作者:太空宇宙 更新时间:2023-11-03 10:52:55 25 4
gpt4 key购买 nike

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com