MVVM 本地化 - View 中的本地化资源与 ViewModel 中的本地化资源?

Wil*_*ert 5 wpf localization mvvm

本地化是 View 的责任还是 ViewModel 的责任?最初,我认为它显然属于VM,因为它只是需要通过视图显示的数据。到底需要显示什么对于视图来说并不重要。另外,我的经验是XAML比ViewModel代码更脆弱。但在今天的讨论中,有些人坚信本地化是视图的责任。

以下是我认为这两个版本的一些优点:

将它们放入 View 的优点:

  • ViewModel 忽略本地化
  • 您可以在 XAML 中看到资源键
  • 更少的代码

将它们放入 ViewModel 的优点:

  • 视图忽略本地化
  • 除了 ViewModel 之外,View 不需要知道任何东西
  • 组合和创建更复杂的字符串变得更容易。

在使用 MVVM 模式的 Wpf 应用程序中,可本地化元素(字符串资源)应该进入视图还是视图模型?为什么?这两种方法还有哪些其他优点和缺点?

评论后的一些背景信息:假设本地化后端基于 resx (而不是 LocBaml)。此外,假设有一个框架,(View-Variant) 可以用字符串透明地替换视图中的资源 ID,或者 (ViewModel-Variant) 会自动为 ViewModel 上的本地化属性生成 INotifyPropertyChanged 事件。

然而,我主要感兴趣的是为什么从概念或更清晰的代码角度来看它更好,而忽略后端。

rom*_*oza 1

有些资源属于View,有些资源属于ViewModel。我认为这方面没有严格的规定。使用你自己的判断。就我个人而言,我与 View 共享 ViewModel 的资源文件。