前言

本文主要介绍Wpf读写Xaml文件。

读写实现

首先我们使用XamlWriter将Wpf的对象转换为Xaml字符串,代码如下:

var btn = sender as Button;
string xamlString = XamlWriter.Save(btn);
tbXaml.Text = xamlString;

XamlWriter的Save函数,会将指定的对象和其属性序列化 成Xaml字符串。

注意:这里有一个概念,Xaml是对象的序列化后的结果,即,Xaml本质上和Xml是一样,都是C#的对象的序列化字符串。

生成字符串后,我们可以把他保存进Xaml文件备用,代码如下:

File.WriteAllText("test.Xaml", tbXaml.Text);

然后读取刚刚存储的Xaml文件的内容,代码如下:

var str = File.ReadAllText("test.Xaml");
tbXamlRead.Text = str;

然后我们使用XamlReader的Parse方法解析这个字符串,因为我们知道他是Button类型序列化后的字符串,所以我们可以直接强转为Button类型的对象,然后再将这个对象添加进一个容器中,代码如下:

 if(!string.IsNullOrEmpty( tbXamlRead.Text))
{
var btn = XamlReader.Parse(tbXamlRead.Text) as Button;
spCon.Children.Add(btn);
}

除了解析字符串这种方式将Xaml转换为对象,我们也可以采用XamlReader的Load方法,将流直接转换为Button对象,代码如下:

 var stream = File.OpenRead("test.Xaml");
var btn = XamlReader.Load(stream) as Button;
spCon.Children.Add(btn);

测试应用如下图所示:

----------------------------------------------------------------------------------------------------

到此,Wpf读写Xaml文件就已经介绍完了。

代码已经传到Github上了,欢迎大家下载。

Github地址: https://github.com/kiba518/WpfXamlReadAndWrite/

----------------------------------------------------------------------------------------------------

注:此文章为原创,任何形式的转载都请联系作者获得授权并注明出处!
若您觉得这篇文章还不错,请点击下方的【推荐】,非常感谢!

https://www.cnblogs.com/kiba/p/15307295.html

Wpf读写Xaml文件的更多相关文章

  1. WPF 读写TxT文件

    原文:WPF 读写TxT文件 文/嶽永鹏 WPF 中读取和写入TxT 是经常性的操作,本篇将从详细演示WPF如何读取和写入TxT文件. 首先,TxT文件希望逐行读取,并将每行读取到的数据作为一个数组的 ...

  2. vs.net2017在编辑的wpf的xaml文件引用本程序集下的类提示“找不到”

    local对应就是当前exe程序下的类,会提示“...命令空间...找不到...” 因为我调整过生成的,于是尝试调回来anyCPU 问题解决. 看了一下vs.net2017的所在目录"C:\ ...

  3. WPF 访问外部的xaml文件

    原文:WPF 访问外部的xaml文件 今天做主题时,需要访问外部的xaml文件,方法: using (FileStream s = new FileStream("C:\\Control.x ...

  4. WPF中Style文件的引用——使用xaml代码或者C#代码动态加载

    原文:WPF中Style文件的引用--使用xaml代码或者C#代码动态加载 WPF中控件拥有很多依赖属性(Dependency Property),我们可以通过编写自定义Style文件来控制控件的外观 ...

  5. wpf xaml文件编辑出现中文乱码

    突然有一天,发现在xaml文件编辑窗里打汉字出来了乱码...抓狂 结果发现是番茄助手搞得鬼.只能在编辑xaml文件是暂时关闭番茄助手 visual assist

  6. WPF整理-XAML构建后台类对象

    1.XAML 接触WPF的第一眼就是XAML---XAML是用来描绘界面的.其实不然! "Actually, XAML has nothing to do with UI. It's mer ...

  7. WPF下载远程文件,并显示进度条和百分比

    WPF下载远程文件,并显示进度条和百分比 1.xaml <ProgressBar HorizontalAlignment="Left" Height="10&quo ...

  8. WPF 之 style文件的引用

    总结一下WPF中Style样式的引用方法. 一.内联样式: 直接设置控件的Height.Width.Foreground.HorizontalAlignment.VerticalAlignment等属 ...

  9. C# WPF 解压缩7zip文件 带进度条 sevenzipsharp

      vs2013附件 :http://download.csdn.net/detail/u012663700/7427461 C# WPF 解压缩7zip文件 带进度条 sevenzipsharp W ...

随机推荐

  1. 跟我一起写 Makefile(四)

    书写规则 ---- 规则包含两个部分,一个是依赖关系,一个是生成目标的方法. 在Makefile中,规则的顺序是很重要的,因为,Makefile中只应该有一个最终目标,其它的目标都是被这个目标所连带出 ...

  2. 一看就会的高效Discuz初始化入门安装方法

    在使用Discuz搭建论坛的过程中,小九发现有许多朋友对于宝塔的安装和初始化不太熟悉,找不到适合的方法.或是按照一些教程安装却出现问题得不到解决,只能选择重新再来. 今天,小九给大家介绍简单的镜像一键 ...

  3. spring-boot 2.5.4,nacos 作为配置、服务发现中心,Cloud Native Buildpacks 打包镜像,GitLab CI/CD

    spring-boot 2.5.4,nacos 作为配置.服务发现中心,Cloud Native Buildpacks 打包镜像,GitLab CI/CD 本文主要介绍 Java 通过 Cloud N ...

  4. 虚拟机下安装Centos设置静态ip,并通过桥接连接

    Centos7.6设置静态IP 1.CentOS7默认网卡设备文件存放于该目录下 /etc/sysconfig/network-scripts/ 网卡设备默认的名字为:ifcfg-ens33 查看网卡 ...

  5. virtualenv 创建python虚拟环境

    为什么要创建python虚拟环境 在开发Python应用程序的时候,系统安装的Python3只有一个版本:3.4.所有第三方的包都会被pip安装到Python3的site-packages目录下. 如 ...

  6. Leaflet 中 删除 一组 标记(Marker)

    动态显示一个标签: L.marker([obj.Y,obj.X]).addTo(map).bindPopup(obj.name).openPopup(); let layers=[]; let myG ...

  7. 【转】ps命令详解与使用

    ps 概述 Linux中的ps命令是Process Status的缩写.ps命令用来列出系统中当前运行的那些进程.ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态 ...

  8. java activity工作流

    java activity工作流 参考资料: 1.https://blog.csdn.net/jiangyu1013/article/details/73250902 2.https://blog.c ...

  9. 深入浅出Mybatis系列(五)---配置详解之settings设置

    settings 中的设置是非常关键的,它们会改变 MyBatis 的运行时行为.下表描述了设置中各项的意图.默认值等. 设置参数 描述 有效值 默认值 cacheEnabled 该配置影响的所有映射 ...

  10. SpringBoot中的thymeleaf引擎报错

    关于:thymeleaf报错: An error happened during template parsing (template: "class path resource [temp ...