本地化是View还是ViewModel的责任?起初,我认为它显然属于虚拟机,因为它只是需要由视图显示的数据。究竟需要展示什么对于这个观点来说并不重要。另外,我已经获得了XAML比ViewModel代码更脆弱的经验。但在今天的讨论中,有些人坚信本地化是这个观点的责任。MVVM本地化 - 视图与ViewModel中的本地化资源?
下面是一些我看到两个版本的优点:将它们放入视图的
优点:
- 视图模型是无视本地化
- 你可以看到在XAML的资源键
- 更少的代码将它们放入视图的
优势型号:
- View是无视本地化
- 的视图并不需要知道,除了它的视图模型
- 它更容易结合,创建更复杂的字符串什么。
在使用MVVM模式的Wpf应用程序中,应将可本地化的元素(字符串资源)放入视图还是放入viewmodel?为什么?这两种方法还有什么其他的优点和缺点?
评论后的一些背景信息:假设本地化后端基于resx(不是LocBaml)。另外,假设有一个框架(View-Variant)可以用该字符串透明地替换视图中的资源id,或者(ViewModel-Variant)会为ViewModel上的本地化属性自动生成INotifyPropertyChanged事件。
但是,我主要关注的是为什么从概念或清洁代码的角度来看它更好,无视后端。
这可以被认为主要是基于意见的。在所有情况下,我更喜欢ViewModel-First方法。我在我的应用程序中将字符串保留为常规'resx'资源,并使用一些辅助类将它们加载到VM中,然后将其传递给View。 –
它确实有一个意见组件,但有(我希望)有更多的好的理由来支持或反对每个变体。我对这些感兴趣。 – Wilbert