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

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

时间:2024-05-22 22:42:47浏览次数:30  
标签:类库 文件 xaml 设计 WPF 资源 字典

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/webenh/p/18207287

相关文章

  • WPF 实现触摸滑动功能
    自定义ScrollViewer的Touch事件--触摸上下移动ScrollViewer滚动到指定位置 12345678910111213141516171819202122232425262728double mPointY;//触摸点的Y坐标double mOffsetY;//滚动条当前位置bool mIsTouch= false;//是否触......
  • GeneralUpdate .Net5 WPF、Winfrom、控制台应用自动更新组件
    https://www.bilibili.com/video/BV1aX4y137dd/?vd_source=43d3e66cc2ad46bac54dfb0c6a3a0a23    GeneralUpdate教程2022.4.23 https://www.bilibili.com/video/BV1FT4y1Y7hV/?vd_source=43d3e66cc2ad46bac54dfb0c6a3a0a23   https://mp.weixin.qq.com/s/pR......
  • 基于WPF+Sqlite开发抽奖软件【内附源码】
    在很早之前,就想过开发一款抽奖软件,却一直没有实际去做,最近经过一段时间的准备,终于开发出了一款基于WPF+Sqlite版的抽奖软件,包括客户端和管理端。本项目主要是为了熟悉WPF开发流程,仅供学习分享使用,如有不足之处,还请指正。 涉及知识点 抽奖软件是包括客户端和管理端,在抽奖软件......
  • .NET下免费开源的PDF类库(PDFSharp)
    前言目前.NET体系下常见的PDF类库有Aspose、QuestPDF、Spire、iTextSharp等,有一说一都挺好用的,我个人特别喜欢QuestPDF它基于C#FluentAPI提供全面的布局引擎;但是这些库要么属于商业库价格不菲(能理解收费),但是年费太贵了。要么是有条件限制开源的,如Spire开源版本有各种限制。i......
  • WPF ListBox thumbnails and image mvvm behavior CallMethodAction
    <Windowx:Class="WpfApp108.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft......
  • Serilog日志输出到WPF UI控件
    使用到日志接收器的接口 ILogEventSinkWPF+Prsim+Serilog详细介绍链接 https://github.com/serilog/serilog/wiki/Developing-a-sink   publicinterfaceILogEventSinkWrite:ILogEventSink{LogEventGetLogMessage();}publicclassLogEventSink:I......
  • 界面组件DevExpress WPF v23.2新版亮点:富文本编辑器、电子表格组件升级
    DevExpressWPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpressWPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。DevExpressWPF控件日前正式发布了近期的一个重大......
  • WPF OpenCVSharp4
    usingOpenCvSharp;usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Windows;usingSystem.Windows.Controls;usingSystem.Windows.Data;usingSystem.Windows.Documents;usingSy......
  • WPF Image ZoomIn ZoomOut via MouseWheel
    //xaml<Windowx:Class="WpfApp104.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.mi......
  • WPF使用静态属性制作按钮样式
    <Window.Resources><!--定义样式--><Stylex:Key="CustomButtonStyle"TargetType="Button"><SetterProperty="Tag"Value="{x:Staticlocal:ButtonColorSets.Button1Colors}"/>......