zoukankan      html  css  js  c++  java
  • Wpf读写Xaml文件

    前言

    本文主要介绍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);

    测试应用如下图所示:

    无关PS:TemplateBinding和Binding的区别是,Binding可以绑定元素属性和数据上下文的属性,而且TemplateBinding只能在模板中使用,意思是绑定使用这个模板的父对象的属性。

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

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

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

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

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

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

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

     

    https://www.cnblogs.com/kiba/
  • 相关阅读:
    能飞英语学习软件学习实践
    英语学习方式总结与实践
    Hello World
    centos 7.6中搭建samba共享服务
    PHP漏洞全解(一)PHP网站的安全性问题
    MySQL查询语句练习题
    在PHP中使用CURL实现GET和POST请求的方法
    js数组的操作大全
    php四种基础算法:冒泡,选择,插入和快速排序法
    Linux查看端口使用状态及启动
  • 原文地址:https://www.cnblogs.com/kiba/p/15307295.html
Copyright © 2011-2022 走看看