在后台代码中引入XAML的方法

news/2024/6/29 0:07:55

load 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,如需转载请自行联系原作者


http://lihuaxi.xjx100.cn/news/238832.html

相关文章

【学习笔记】git 使用文档

安装 git # mac 环境 brew install git检查是否安装成功 ➜ ~ git --version git version 2.20.1 (Apple Git-117)卸载 git ➜ ~ which -a git /usr/bin/git ➜ ~ cd /usr/bin ➜ bin sudo rm -rf git*git init 命令 对一个空文件&#xff0c;git 初始化。文件名称增加…

stackoverflow_StackOverflow帐户如何确保您在公认的开发人员表格中占有一席之地

stackoverflowby Melchor Tatlonghari由Melchor Tatlonghari StackOverflow帐户如何确保您在公认的开发人员表格中占有一席之地 (How a StackOverflow account can secure you a seat at the recognised developer table) I have never met a developer who hasn’t heard of …

AR介绍

AR介绍 AR全名扩增实境&#xff0c;是一种实时融合现实与虚拟的图像技术。 AR技术的三板斧&#xff1a;感知&#xff08;寻找目标定位位置-与环境交互&#xff09;&#xff0c;渲染&#xff08;实现产品交互-与客户交互&#xff09;&#xff0c;追踪&#xff08;捕捉目标运动轨…

创始区块链初始化

想知道更多区块链技术知识&#xff0c;请百度【链客区块链技术问答社区】如果通过创世区块来初始化区块链的话&#xff0c;首先需要一个初始化区块链的json文件&#xff0c;如下。 { “config”: { “chainId”: 15, “homesteadBlock”: 0, “eip155Block”: 0, “eip158Block…

Windows Phone SDK update for Windows Phone 7.8

下载&#xff1a;http://www.microsoft.com/en-us/download/details.aspx?id36474 (在线安装) http://kuai.xunlei.com/d/cHbJCAIX4wBNVgFR5aa (离线下载 全语言 5.5G....) MS博客介绍&#xff1a;http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/01/22/now-a…

测试覆盖率

一、概念 覆盖率&#xff1a;用来度量测试完整性的一个手段&#xff0c;大体可划分为逻辑覆盖和功能覆盖 覆盖率 &#xff08;至少被执行一次的 item 数&#xff09;/ item 的总数二、常用的逻辑覆盖 覆盖率中最常见的是逻辑覆盖率(Logic Coverage)&#xff0c;也叫代码覆盖…

docker使用mongo_如何使用Docker在AWS上部署Mongo:初学者的权威指南

docker使用mongo为什么需要这个&#xff1f; (Why you need this?) 因为JS Python Mongo 完整的数据开发 (Because JS Python Mongo full data development) I am a Meteor developer. More precisely I use Vulcan.js, but that’s a whole other story. Meteor is a fu…

@RequestBody和@RequestParam区别

转载自&#xff08;http://blog.csdn.net/xinluke/article/details/52710706&#xff09; RequestParam 用来处理Content-Type: 为 application/x-www-form-urlencoded编码的内容。&#xff08;Http协议中&#xff0c;如果不指定Content-Type&#xff0c;则默认传递的参数就是a…