【问题标题】:Silverlight 4 MVVM app, resx editing by user, Blend only?Silverlight 4 MVVM 应用程序,用户进行 resx 编辑,仅混合?
【发布时间】:2011-02-04 17:48:10
【问题描述】:

在 Silverlight 4 应用程序中,我们的用户群需要为我们定义他们想要的按钮、标签、各种屏幕文本等内容。我了解资源文件的方法,但我想知道什么时候想要为用户提供这种控制以定义资源文件中的文本,让他们以可以查看对 XAML 页面的更改的方式执行此操作的最佳方法是什么?他们需要安装 Blend 吗?

我依稀记得在做一个 WinForms 应用程序时,有一次我将实际的 Winform 交给用户,他们使用某种视觉设计器来编辑按钮文本、标签等,然后将这些更改保存到资源文件。

我们的应用是 MVVM,因此 XAML 中的每个项目都将绑定到其视图模型中的一个属性,然后该属性将从资源文件中加载条目。

如果有办法让用户在直观地查看更改的同时更新 resx 文件的内容,请告诉我。

非常感谢您的任何帮助。

【问题讨论】:

    标签: xaml silverlight-4.0 expression-blend resx


    【解决方案1】:

    我过去所做的是为资源 (resx) 文件提供专用程序集。默认情况下,它们被“嵌入”到程序集中。诀窍是将 resx 文件上的属性更改为不嵌入 (False)。这样,文件是必须与程序集一起使用的单独的 resx xml 文件(并且位于正在运行的应用程序的同一 /bin 目录中)。这就是您在一些带有 /en-US/ 和其他资源的 /bin 目录中看到的内容。过去,我为用户创建了一个简单的 GUI,以便能够编辑这些写回磁盘的 resx 文件。我不熟悉 Silverlight 所需此类权限的内部工作原理,但我猜在更糟糕的情况下,编辑的 resx 文件只是上传到服务器,在下次应用重启或类似情况下会下载新副本。

    现在,当我说“过去”时,那是在 2003 年。最近我不得不使用ResXResourceReader 手动执行此操作,因为我无法修改现有程序集。

    一些示例代码(从内存中编写,完全未经测试):

    using (var reader = new ResXResourceReader("[path-to-bin]/MyResources.resx"))
    {
      var value = reader["My_key_in_the_resx_file"].ToString;
    }
    

    请注意,通过这条路线,您确实可以访问其他类型的资源,例如二进制文件和嵌入在 resx 文件中的文件。

    最后,注意您的编码格式。一些海外编辑使用UTF16。所以可能需要一个通用的 Unicode 转换器。

    另请注意,有一个 ResXResourceWriter 类,如果您想使用自己的编写器通过代码更新 resx 文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多