在后台代码中引入XAML的方法
本文将介绍三种方法用于在后台代码中动态加载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的方法相关推荐
- php 引入echarts路径,angular4中引入echarts的方法(代码示例)
本篇文章给大家带来的内容是关于angular4中引入echarts的方法(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 1.安装ngx-echarts npm insta ...
- 【转】在html中引入CSS的方法
在html中,引入css的方法主要有行内式.内嵌式.导入式和链接式4种 1.行内式 即在标记的style属性中设定css样式,这种方式本质上没体现出css的优势,因此不推荐使用. 2.嵌入式 在对页面 ...
- vue实例中调用外部js_vue中引入外部js方法实例
我们在做vue项目时,经常会需要引入js,常用的有以下几种.本文主要和大家分享vue中引入外部js方法实例,希望能帮助到大家. 第一种import XX from "路径" Vue ...
- 在html中引入CSS的方法
在html中,引入css的方法主要有行内式.内嵌式.导入式和链接式4种 1.行内式 即在标记的style属性中设定css样式,这种方式本质上没体现出css的优势,因此不推荐使用. 2.嵌入式 ...
- HTML中引入CSS的方法
HTML中引入CSS的方法 在HTML中引入CSS的方法主要有四种,它们分别是行内式.内嵌式.链接式和导入式. 1.行内式 行内式是在标记的style属性中设定CSS样式.这种方式 ...
- [vue] vue在组件中引入插件的方法有哪些?
[vue] vue在组件中引入插件的方法有哪些? 插件通常用来为 Vue 添加全局功能.插件的功能范围没有严格的限制--一般有下面几种:添加全局方法或者属性.如: vue-custom-element ...
- $.post请求的参数在后台代码中得到为null_vue中Axios的封装和API接口的管理
来源:愣锤 https://juejin.im/post/684490365288107214 如图,面对一团糟代码的你~~~真的想说,What F~U~C~K!!! 回归正题,我们所要的说的axio ...
- 你还在 Java 代码中写 set/get 方法?赶快试试这款插件吧!
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:Mr.ml https://blog.csdn.net/Ma ...
- idea自动生成get set_CTO:不要在Java代码中写set/get方法了,逮一次罚款
前言 what?你的 Java 代码中还充斥着大量的 set/get 方法? 我们在刚开始学习 Java 语言的时候讲过,面向对象的三大特征就是封装,继承,和多态.在 Java 中,要保证封装性,需要 ...
最新文章
- NC:中国药科郝海平和郑啸发现饮食-微生物互作缓解肠损伤
- 产品运营 | 如何通过数据评判你的 App 表现?
- Android IOS WebRTC 音视频开发总结(三三)-- Periscope介绍
- Spring-AOP 静态普通方法名匹配切面
- 蓝牙BLE LINK LAYER剖析(二) -- PDU
- 设计模式(七)适配器模式(Adapter Pattern)
- Linux 中的文件锁
- 日常运维管理 常用命令(3)
- WeCode在线少儿编程|为什么我们选择代码编程
- 3Dmax各类问题汇总及其完整解决方法
- 为什么RTC晶振频率是32768Hz
- 多网卡多网关设置错误:RTNETLINK answers: File exists
- 多元线性方程的python解法
- 03 Jme3和Nifty1.4.2中文显示
- ES8新特性 async,await实现异步
- 利用 Echarts 简单制作省份或区域地图步骤
- Gitee上传代码教程
- 如何做召回dssm,fm,Mind,youtube等模型
- 一个简单的定时任务调度中心设计方案
- ARM SIMD NEON 简介 (翻译自 Introducing NEON Development Article)