当前位置: 首页 > 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 控件开发的一个内置约定。

    http://www.lryc.cn/news/543197.html

    相关文章:

  • VidSketch:具有扩散控制的手绘草图驱动视频生成
  • 解锁C# XML编程:从新手到实战高手的蜕变之路
  • kafka-leader -1问题解决
  • 超大规模分类(四):Partial FC
  • uniapp 小程序如何实现大模型流式交互?前端SSE技术完整实现解析
  • 因子分析详解:从理论到MATLAB实战
  • 【组态PLC】基于三菱西门子S7-200PLC和组态王液料混合系统组态设计【含PLC组态源码 M016期】
  • js:根据后端返回的数组取出每一个数组的keyword字段然后拼接成一个逗号分隔的字符串
  • 基于大模型的肺纤维化预测及临床方案研究报告
  • 7. 【.NET 8 实战--孢子记账--从单体到微服务--转向微服务】--微服务基础工具与技术--Ocelot 网关--路由
  • 【GESP】C++二级模拟 luogu-b3995, [GESP 二级模拟] 小洛的田字矩阵
  • 监督学习——基于线性回归的波士顿房价预测:理论、实践与评估
  • Selenium 调用模型接口实现功能测试
  • 回调函数的用法
  • springboot实现文件上传到华为云的obs
  • 南京布局产业园剖析:成都树莓集团的战略逻辑
  • C++ QT 6.6.1 QCustomPlot的导入及使用注意事项和示例 | 关于高版本QT使用QCustomPlot报错问题解决的办法
  • 【算法】哈希表详解
  • 【红队利器】单文件一键结束火绒6.0
  • Docker小游戏 | 使用Docker部署star-battle太空飞船射击小游戏
  • 【EB-06】SystemCreator dbc转arxml
  • (0)阿里云大模型ACP-考试回忆
  • 按键精灵鹰眼中控:ios多设备管理工具
  • __对于初学者的CCS 汉化
  • JavaScript 系列之:Ajax、Promise、Axios
  • Vidma Ver.2.14.0 高级版
  • Redis Lua Script 溢出漏洞(CVE-2024-31449)
  • 【Mysql】我在广州学Mysql 系列—— 性能优化相关例题
  • java23种设计模式-中介者模式
  • 鸿蒙next 点击穿透实现