本文将介绍三种方法用于在后台代码中动态加载XAML,其中有两种方法是加载已存在的XAML文件,一种方法是将包含XAML代码的字符串转换为WPF的对象。

这些是我在编写RegeX时获得的经验,它们将会给WPF程序带来更多的灵活性。

一、在资源字典中载入项目内嵌资源中的XAML文件

Application.Current.Resources.MergedDictionaries.Insert(0, Application.LoadComponent(new Uri("abc/Index.xaml", UriKind.Relative)) as ResourceDictionary);

此方法仅限于载入项目中包含的XAML资源文件,测试中载入项目以外的资源会提示找不到文件。

二、在资源字典中载入外部XAML文件

Application.Current.Resources.MergedDictionaries.Insert(0, XamlReader.Load(new FileStream("C:\\index.xaml", FileMode.Open)) as ResourceDictionary);

此方法适用于载入项目以外的XAML资源文件。

三、将XAML形式的字符串转换为对象

XamlReader.Parse(@"<FlowDocument xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation""><Paragraph><Run>Hi!</Run></Paragraph></FlowDocument>") as FlowDocument

此方法将生成一个流文档对象,在RegeX中我就是通过这种方法来灵活的控制流文档内容,以生成处理结果。

需注意的是,此方法需要.Net 3.5 SP1支持,此前好像是使用的Load方法的重载。

 

动态加载XAML文件技术非常适合用于资源载入,以此来实现语言切换、主题变换等功能。

动态转换XAML字符串为WPF对象技术可为程序提供更为灵活的对象生成方式,这在一些复杂的情况下尤为实用。

下载本文的PDF版本:http://www.box.net/shared/y2ajdmgrvl

本文转自斯克迪亚博客园博客,原文链接:http://www.cnblogs.com/SkyD/archive/2008/09/30/1302348.html,如需转载请自行联系原作者

在后台代码中引入XAML的方法相关推荐

  1. php 引入echarts路径,angular4中引入echarts的方法(代码示例)

    本篇文章给大家带来的内容是关于angular4中引入echarts的方法(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 1.安装ngx-echarts npm insta ...

  2. 【转】在html中引入CSS的方法

    在html中,引入css的方法主要有行内式.内嵌式.导入式和链接式4种 1.行内式 即在标记的style属性中设定css样式,这种方式本质上没体现出css的优势,因此不推荐使用. 2.嵌入式 在对页面 ...

  3. vue实例中调用外部js_vue中引入外部js方法实例

    我们在做vue项目时,经常会需要引入js,常用的有以下几种.本文主要和大家分享vue中引入外部js方法实例,希望能帮助到大家. 第一种import XX from "路径" Vue ...

  4. 在html中引入CSS的方法

    在html中,引入css的方法主要有行内式.内嵌式.导入式和链接式4种 1.行内式     即在标记的style属性中设定css样式,这种方式本质上没体现出css的优势,因此不推荐使用. 2.嵌入式 ...

  5. HTML中引入CSS的方法

    HTML中引入CSS的方法 在HTML中引入CSS的方法主要有四种,它们分别是行内式.内嵌式.链接式和导入式. 1.行内式           行内式是在标记的style属性中设定CSS样式.这种方式 ...

  6. [vue] vue在组件中引入插件的方法有哪些?

    [vue] vue在组件中引入插件的方法有哪些? 插件通常用来为 Vue 添加全局功能.插件的功能范围没有严格的限制--一般有下面几种:添加全局方法或者属性.如: vue-custom-element ...

  7. $.post请求的参数在后台代码中得到为null_vue中Axios的封装和API接口的管理

    来源:愣锤 https://juejin.im/post/684490365288107214 如图,面对一团糟代码的你~~~真的想说,What F~U~C~K!!! 回归正题,我们所要的说的axio ...

  8. 你还在 Java 代码中写 set/get 方法?赶快试试这款插件吧!

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:Mr.ml https://blog.csdn.net/Ma ...

  9. idea自动生成get set_CTO:不要在Java代码中写set/get方法了,逮一次罚款

    前言 what?你的 Java 代码中还充斥着大量的 set/get 方法? 我们在刚开始学习 Java 语言的时候讲过,面向对象的三大特征就是封装,继承,和多态.在 Java 中,要保证封装性,需要 ...

最新文章

  1. NC:中国药科郝海平和郑啸发现饮食-微生物互作缓解肠损伤
  2. 产品运营 | 如何通过数据评判你的 App 表现?
  3. Android IOS WebRTC 音视频开发总结(三三)-- Periscope介绍
  4. Spring-AOP 静态普通方法名匹配切面
  5. 蓝牙BLE LINK LAYER剖析(二) -- PDU
  6. 设计模式(七)适配器模式(Adapter Pattern)
  7. Linux 中的文件锁
  8. 日常运维管理 常用命令(3)
  9. WeCode在线少儿编程|为什么我们选择代码编程
  10. 3Dmax各类问题汇总及其完整解决方法
  11. 为什么RTC晶振频率是32768Hz
  12. 多网卡多网关设置错误:RTNETLINK answers: File exists
  13. 多元线性方程的python解法
  14. 03 Jme3和Nifty1.4.2中文显示
  15. ES8新特性 async,await实现异步
  16. 利用 Echarts 简单制作省份或区域地图步骤
  17. Gitee上传代码教程
  18. 如何做召回dssm,fm,Mind,youtube等模型
  19. 一个简单的定时任务调度中心设计方案
  20. ARM SIMD NEON 简介 (翻译自 Introducing NEON Development Article)

热门文章

  1. 翡润年华-毛货展示003
  2. JavaScript 关闭窗口事件
  3. 一个GDIPlus的Bug -- OutofMemory异常
  4. IANA定义的常见服务的端口号列表
  5. Linux下redis安装部署
  6. 浅析ado.net获取数据库元数据信息
  7. ASP.NET 制作让搜索引擎可以友好访问的链接
  8. DataGrid连接Access的快速分页法——动态生成SQL语句
  9. Python3中__init__.py文件介绍
  10. FFmpeg中libswresample库简介及测试代码