首页 > 其他分享 >WPF 给类库设置设计时使用的资源字典

WPF 给类库设置设计时使用的资源字典

时间:2023-04-21 09:56:44浏览次数:32  
标签:类库 文件 xaml 设计 WPF 资源 字典

在开发多语言版本时,我将界面显示的文本保存在语言资源zh.xaml和en.xaml中,但程序启动,加载语言资源时是外部的配置文件决定的,因此语言资源我无法添加在App.xaml文件中,而开发单个 XAML 界面时,设计器将会因为找不到资源文件的存在,而拿不到资源,每次遇到语言相关的资源键值,都需要手动去复制,非常麻烦,后续代码查看也不能直接跳转到对应的Key值上。
最佳的方法是和 Blend 一样,在设计时让设计器引用上某些资源,这样设计器就能工作。实现方法是在类库里面添加特殊的文件,这个特殊的文件有文件夹和命名的要求,这是在 VisualStudio 的设计器里面写常量固定的路径。在项目的Properties文件夹里面新建 DesignTimeResources.xaml 资源字典文件,这个文件的命名规则是有约定的,不推荐自己修改。或者在csproj 上添加如下代码:
<ItemGroup> <Page Update="Properties\DesignTimeResources.xaml"> <Generator>MSBuild:Compile</Generator> <SubType>Designer</SubType> <ContainsDesignTimeResources>true</ContainsDesignTimeResources> </Page> </ItemGroup>
上面代码核心就是 ContainsDesignTimeResources 这个属性。理论上可以给任意的 xaml 文件设置这个属性,但是 XAML 设计器在很多 VS 版本上只读取此路径的文件。在 DesignTimeResources.xaml 资源字典添加对其他资源字典的引用,即可实现让类库的设计器找到资源,而在运行时是不会加载资源到内存。
最后将需要使用的资源文件中添加到DesignTimeResources.xaml文件中即可,如下所示:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="../zh.xaml"></ResourceDictionary> </ResourceDictionary.MergedDictionaries> </ResourceDictionary>
这样就可以在开发阶段,直接使用zh.xaml中的键值,也可以在xaml界面上直接跳到到该键值

标签:类库,文件,xaml,设计,WPF,资源,字典
From: https://www.cnblogs.com/dongweian/p/17339262.html

相关文章

  • 【WPF学习】01
    布局基础.1根据格网划分行列--Grid,Grid.RowDefinition,Grid.ColumnDefinition格网<Grid></Grid>多行<Grid.RowDefinitions><RowDefinition/><RowDefinition/></Grid.RowDefinition>多列<Grid.ColumnDefinitions><ColumnDefini......
  • UVA Immediate Decodability(简单字典树)
    ImmediateDecodabilityTimeLimit:3000MS     MemoryLimit:0KB     64bitIOFormat:%lld&%lluSubmit StatusDescription  ImmediateDecodability Anencodingofasetofsymbolsissaidtobe immediately decodableifnocode......
  • 对比Python中的列表、元组、字典、集合、字符串等之间异同
    1.数据类型列表、元组、字典、集合、字符串均属于python3的标准数据类型。字符串和元组属于不可变数据,即创建后不可修改。列表、字典、集合属于可变数据,即创建后可以修改元素。2.创建有元素的对象3.创建没有元素的对象列表使用eval()或list()或中括号[]进行创建,元素之间使用逗号分......
  • Python中保存字典类型数据到文件
    三种方法:1、在Python中使用pickle模块的dump函数将字典保存到文件中importpicklemy_dict={'Apple':4,'Banana':2,'Orange':6,'Grapes':11}#保存文件withopen("myDictionary.pkl","wb")astf:pickle.dump(my_dict,tf......
  • WPF中弹出界面在不影响状态栏的情况下占满界面
    举例子:比如在MainView.xaml.cs可以写在Window_Loaded事件中privatevoidWindow_Loaded(objectsender,RoutedEventArgse){this.Left=0.0;this.Top=0.0;this.Height=SystemParameters.WorkArea.Height;this.Width=SystemParameters.Work......
  • 1.WPF UI - 现代化设计的开源 WPF 框架
    1.WPFUI-现代化设计的开源WPF框架WPFUI是一个基于C#开发的,拥有4kstar的开源UI框架。WPFUI在WPF的基础上,提供了更多的现代化,流利的,直观的设计和组件。重要的是,WPFUI完全免费!如果你对WPF比较熟悉,那么可以很快的上手这个UI框架,并集成中项目中去。WPFUI......
  • Azure DevOps(一)基于 Net6.0 的 WPF 程序如何进行持续集成、持续编译
    一,引言我们是否正在为如何快速的编译、部署客户端应用程序而烦恼?这也是博主最近遇到的问题。目前博主所在公司主要做项目级的定制化开发,多以C/S架构的WPF程序为主,每次到了协助开发团队给实施团队编译好的要测试程序包时,就会出现多人协助,编译、打包好的二进制程序包pull......
  • python当中如果有一个列表里面是多个字典,且有一对键值对相同,想要求不同的键对应的值之
    a=[{"id":1,"count":29},{"id':1,"count":39}]ids=list(set([u["id"]foruina]))#[1,]b=[]foridinids:count=0foruina:ifidinu.get('id'):count......
  • WPF 给控件增加圆角效果注意事项
    一般都使用Border包住需要增加圆角效果的控件,但是有一些地方需要注意:<BorderCornerRadius="8"Background="Red"><TextBlockBackground="Red"Margin="4"Height="20"FontSize="8"Foreground="White"/>......
  • WPF 绑定注意事项二
    1.通用静态快捷键绑定命令cs:publicstaticKeyBtnReferHotKey=Key.F7;xaml:<UserControl.InputBindings><KeyBindingKey="{x:Staticcommon:Common.BtnReferHotKey}"Command="{BindingCmdSelectFromMaterial}"CommandParameter=&......