從 XAML 讀取物件

考慮應該在 XAML 中構造以下類的結構,然後讀入 CLR 物件:

namespace CustomXaml
{
    public class Test
    {
        public string Value { get; set; }
        public List<TestChild> Children { get; set; } = new List<TestChild>(); 
    }

    public class TestChild
    {
        public string StringValue { get; set; }
        public int IntValue { get; set; }
    }
}

類應該沒有顯式建構函式或提供空建構函式。為了保持 XAML 的清潔,需要初始化集合。儘管如此,也可以在 XAML 中初始化集合。

要讀取 XAML,可以使用 XamlServices 類。它在 System.Xaml 中定義,需要新增到引用中。然後,以下行從磁碟讀取 test.xaml 檔案:

Test test = XamlServices.Load("test.xaml") as Test;

XamlServices.Load 方法有幾個過載來從流和其他源載入。如果從嵌入檔案中讀取 XAML(就像在 WPF 中一樣),預設情況下設定為 PageBuild Action 屬性需要更改為 ie tiuan9。否則編譯器將要求引用 WPF 程式集。

要讀取的 XAML 檔案的內容應如下所示:

<Test xmlns="clr-namespace:CustomXaml;assembly=CustomXaml"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      Value="test">
    <Test.Children>
        <TestChild StringValue="abc" IntValue="123"/>
        <TestChild StringValue="{x:Null}" IntValue="456"/>
    </Test.Children>
</Test>

xmlns 定義允許在沒有字首的同一名稱空間中使用類。xmlns:x 的定義是使用像 {x:Null} 這樣的結構的必要條件。當然,可以根據需要定義其他名稱空間或程式集的字首。