演练:从附属程序集中加载资源
本演练演示如何使用 适用于 Visual Studio 的 WPF 设计器从附属程序集中加载资源字符串。 这简化了 WPF 应用程序的本地化。
在本演练中,您将执行下列任务:
创建项目。
启用附属程序集。
创建和访问资源字符串。
完成本演练后,您将具有一个从附属程序集中检索字符串的简单应用程序。
提示
显示的对话框和菜单命令可能会与“帮助”中的描述不同,具体取决于您现用的设置或版本。 若要更改设置,请在“工具”菜单上选择“导入和导出设置”。 有关更多信息,请参见 使用设置。
系统必备
您需要以下组件来完成本演练:
- Visual Studio 2010.
创建项目
第一步是为应用程序创建项目。
创建项目
使用 Visual Basic 或 Visual C# 新建一个名为 ResourceTest 的 WPF 应用程序项目。 有关更多信息,请参见如何:创建新的 WPF 应用程序项目。
MainWindow.xaml 将在 WPF 设计器中打开。
将 Button 控件从工具箱中拖动到设计图面。
双击此按钮为按钮控件创建一个 Click 事件处理程序。
启用附属程序集
通过对 AssemblyInfo 和项目文件进行一些细小的更改来启用附属程序集。
启用附属程序集
在代码编辑器中打开 AssemblyInfo.cs 或 AssemblyInfo.vb。 若要在解决方案资源管理器中查看文件,可能需要单击**“显示所有文件”**。
取消对以下行的注释。
//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
'<Assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)>
保存解决方案。
在解决方案资源管理器中,右击 ResourceTest 项目,并选择**“卸载项目”**。
Visual Studio 将卸载 ResourceTest 项目。
在解决方案资源管理器中,右击 ResourceTest 项目,并选择**“编辑 ResourceTest.csproj”或“编辑 ResourceTest.vbproj”**。
项目文件将在 XML 编辑器中打开。
在与其他 <PropertyGroup> 元素相同的级别插入以下 XML。
<PropertyGroup> <UICulture>en-US</UICulture> </PropertyGroup>
保存并关闭文件。
在解决方案资源管理器中,右击 ResourceTest 项目,并选择**“重新加载项目”**。
在解决方案资源管理器中,将默认 RESX 文件的名称从 Resources.resx 改为 Resources.en-US.resx。
在“属性”窗口中,清除资源文件的**“自定义工具”**值。
在附属程序集中创建一个资源字符串
现在您将在资源文件中创建一个字符串。
在附属程序集中创建一个资源字符串
在解决方案资源管理器中,双击 Resources.zh-cn.resx。
Resources.zh-cn.resx 将在资源设计器中打开。
将默认字符串的名称从**“String1”**改为 helloWorldString。
将**“helloWorldString”**的值改为 Hello world。
保存并关闭资源编辑器。
访问资源字符串
使用 ResourceManager 类,在附属程序集中访问该字符串。
访问资源字符串
在代码编辑器中打开 MainWindow.xaml.cs 或 MainWindow.xaml.vb。
在 MainWindow.xaml.cs 或 MainWindow.xaml.vb 的开头插入以下代码。
using System.Reflection; using System.Resources;
Imports System.Reflection Imports System.Resources
将下面的代码插入到 button1_Click 事件处理程序中。
ResourceManager rm = new ResourceManager( "ResourceTest.Properties.Resources", Assembly.GetExecutingAssembly()); MessageBox.Show(rm.GetString("helloWorldString"));
Dim rm As New ResourceManager( _ "ResourceTest.Resources", _ Assembly.GetExecutingAssembly()) MessageBox.Show(rm.GetString("helloWorldString"))
按 F5 生成并运行该应用程序。
单击按钮查看从附属资源加载的字符串值。
打开 Debug/zh-cn 文件夹查看附属程序集,该程序集名为 ResourceTest.resources.dll。