2011-02-04 44 views
1

在Silverlight 4应用程序中,我们的用户群需要为我们定义他们想要的按钮,标签,各种屏幕文本等内容。我了解资源文件的方法,但是我想知道的是当想要给那种对用户定义资源文件中的文本的控制,让他们以这种方式可以查看他们对XAML页面所做的更改的最佳方式是什么?他们是否需要安装Blend?Silverlight 4 MVVM应用程序,由用户编辑resx,仅混合?

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

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

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

非常感谢您的帮助。

回答

0

我在过去所做的是为资源(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文件。

相关问题