將物件寫入 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,可以使用 XamlServices 類。它在 System.Xaml 中定義,需要新增到引用中。然後,以下行將 Test 型別的例項 test 寫入磁碟上的檔案 test.xaml

XamlServices.Save("test.xaml", test);

XamlServices.Save 方法有幾個過載來寫入流和其他目標。生成的 XAML 應如下所示:

<Test Value="test" xmlns="clr-namespace:CustomXaml;assembly=CustomXaml"
                   xmlns:scg="clr-namespace:System.Collections.Generic;assembly=mscorlib"
                   xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <Test.Children>
    <scg:List x:TypeArguments="TestChild" Capacity="4">
      <TestChild IntValue="123" StringValue="abc" />
      <TestChild IntValue="456" StringValue="{x:Null}" />
    </scg:List>
  </Test.Children>
</Test>

pure xmlns Definition 允許在沒有字首的同一名稱空間中使用類。xmlns:x 的定義是使用像 {x:Null} 這樣的結構的必要條件。作者自動新增 xmlns:scg 以初始化 List<TestChild> 作為 Test 物件的 Children 屬性。它不依賴於建構函式初始化的屬性。