将对象写入 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 属性。它不依赖于构造函数初始化的属性。