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

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM