当前位置: 首页 > news >正文

Wpf 之Generic.xaml

        在 WPF 中,Generic.xaml 是一个特殊的资源文件,它会被自动加载,不需要显式添加。这是 WPF 的命名约定。当 WPF 初始化自定义控件时,它会专门查找这个名字的文件。
这个名字是硬编码在 WPF 框架中的,不能改变。

Generic.xaml 是 WPF 自定义控件的默认样式位置,只要满足以下条件就会自动加载:

  • 文件名必须是 Generic.xaml
  • 文件必须在 Themes 文件夹下
  • 控件必须正确设置 DefaultStyleKey

条件:
1.AssemblyInfo.cs 文件中包含有以下特性:

        [assembly: ThemeInfo(

            ResourceDictionaryLocation.None,             //主题特定资源词典所处位置

            ResourceDictionaryLocation.SourceAssembly    //常规资源词典所处位置

        )]

2.控件库项目的 Themes 文件夹:

        YourProject/
        └── Themes/
            └── Generic.xaml

3.自定义控件 CustomControl1的定义:
    public class CustomControl1 : Window
    {
        static CustomControl1()
        {
            DefaultStyleKeyProperty.OverrideMetadata(typeof(CustomControl1), new                              FrameworkPropertyMetadata(typeof(CustomControl1)));
        }
    }

使用了自定义控件库,检查控件库的项目结构:
CustomControlLibrary/
├── Themes/
│   └── Generic.xaml
├── Controls/
│   └── ExWindow.cs
└── Properties/
      └── AssemblyInfo.cs

自动加载的原理:

1.当 WPF 应用程序启动时,框架会扫描所有引用的程序集

2.对于每个程序集,它会检查是否存在 Themes/Generic.xaml

3.如果找到了,会自动将其加载到应用程序的资源系统中

4.当需要为自定义控件查找样式时,WPF 会:

  • 首先查看控件的 DefaultStyleKey
  • 然后在加载的资源中查找匹配的样式
  • 如果在 Generic.xaml 中找到匹配的样式,就应用它

这就是为什么不需要显式添加 Generic.xaml 的原因 - 它是 WPF 控件开发的一个内置约定。

    相关文章:

  • seacms v9 实现的MySQL注入
  • SQLite 安装教程以及可视化工具介绍
  • python处理文件(完成文件分类)
  • 弱监督语义分割学习计划(1)-简单实现Open Vocabulary Label但是效果不好
  • 面试之《react hooks在源码中是怎么实现的?》
  • 添加成对约束后的标签传播算法研究:使用Python语言编写算法,在空手道数据集下验证算法的准确性,在一定程度上解决非对齐问题
  • 【算法工程】大模型局限性新发现之解决能连github但无法clone项目的问题
  • 使用自制工具类实现安全的密码加密与校验
  • 实现Python+Django+Transformers库中的BertTokenizer和BertModel来进行BERT预训练,并将其应用于商品推荐功能
  • winfrom的progressBar 鼠标移上去显示 进度条的时间
  • LeetCode 15.三数之和
  • Imagination DXTP GPU IP:加速游戏AI应用,全天候畅玩无阻
  • Linux | Ubuntu 与 Windows 双系统安装 / 高频故障 / UEFI 安全引导禁用
  • 香橙派/树莓派 利用Wiring库 使用GPIO模拟PWM
  • WebSocketHandler 是 Spring Framework 中用于处理 WebSocket 通信的接口
  • 普中单片机-51TFT-LCD显示屏(1.8寸 STM32)
  • tableau之雷达图和凹凸图
  • 图数据库 | 23、如何评测图系统 — 评测内容?
  • 正则表达式用法及其示例:匹配、查找、替换文本中的模式,及QT下如何使用正则表达式。
  • Linux网络基础(协议 TCP/IP 网络传输基本流程 IP VS Mac Socket编程UDP)
  • wordpress pc 手机/推送者seo
  • 福田做网站价格/百度搜索风云榜官网
  • 国家认可的赚钱游戏/电脑优化工具
  • 做网站连带责任/免费发布广告信息的网站
  • 怎样说服企业做网站建设推广/郑州网站建设最便宜
  • php开发做网站/个人网站怎么做