关于WPF资源字典生成操作与外部更新即时生效

在WPF中通常需要使用资源字典,特别是多语言的时候,涉及到许多内容,对于资源字典,主要是以键值对的方式进行内容的定义。
对于中文,有对应的key存在以及对应的值存在。通常情况下添加新的字典文件的时候,在字典文件的属性文件中生成操作中定义的是page,而自定义工具是XamlIntelliSenseFileGenerator。工具的作用就是将配置文件编译成相关的二进制文件,以便在程序中调用。如下截图就是默认的方式。如果使用默认方式,资源字典文件*.Xaml文件会编译到程序中生成baml文件,所以相关的键值对都被写死到程序当中,在程序外部无法实现即时更改,即时生效的效果。在这里贴一下微软官网对于生成操作的定义:https://docs.microsoft.com/zh-cn/visualstudio/ide/build-actions?view=vs-2019
在这里插入图片描述
此处我的需求是程序加载外部的资源文件,修改资源文件的键值对,达到不动程序而修改相关内容的效果。所以此处我的配置为:
在这里插入图片描述
程序内部加载资源文件为:Application.LoadComponent(new Uri(@"\Resources\Languages-CN.xaml", UriKind.Relative)) as ResourceDictionary;
通过以上的方式即可修改资源文件,程序就能加载成相关的键值对,而不需要修改代码的内容。

WPF中,资源字典(ResourceDictionary)是一个用于存储各种资源的对象,这些资源可以是样式、模板、控件模板、数据模板、画刷等。当需要从外部DLL文件中引用资源时,可以使用`Source`属性来指定外部DLL文件的资源字典位置。 如果你在使用资源字典集时遇到找不到文件的问题,可能有以下几个原因: 1. DLL文件的路径不正确:确保提供的路径是相对于应用程序的根目录或者是一个绝对路径,且路径中的文件确实存在。 2. DLL文件未被正确引用:在你的项目中需要引用包含资源字典的DLL程序集。 3. 构建操作问题:确保DLL文件的构建操作被设置为"Resource",这样在编译时它会被嵌入到主程序集中。 4. 程序集名称或资源名称不匹配:检查DLL文件的程序集名称和资源字典中的名称是否完全匹配,包括大小写。 5. 当前执行的程序集与资源字典所在程序集不在同一个输出目录下。 以下是一个示例,展示如何在WPF中使用`Source`属性引入外部DLL中的资源字典: ```xml <Application.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="pack://application:,,,/YourAssemblyName;component/YourResourceDictionary.xaml"/> </ResourceDictionary.MergedDictionaries> </ResourceDictionary> </Application.Resources> ``` 请注意,上面的代码中的`YourAssemblyName`应该替换为DLL的程序集名称,`YourResourceDictionary.xaml`应该替换为资源字典文件的名称。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值