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/
  • 相关阅读:
    SVN服务器搭建(一)
    排序算法二:冒泡排序
    【LeetCode】136. Single Number
    【LeetCode】217. Contains Duplicate
    【LeetCode】189. Rotate Array
    【LeetCode】122. Best Time to Buy and Sell Stock II
    【LeetCode】26. Remove Duplicates from Sorted Array
    【LeetCode】20. Valid Parentheses
    【LeetCode】680. Valid Palindrome II
    【LeetCode】345. Reverse Vowels of a String
  • 原文地址:https://www.cnblogs.com/kiba/p/15307295.html
Copyright © 2011-2022 走看看