将 List<T> 的内容 属性 序列化为 XAML 而不在输出中明确显示

Serialize a List<T> content property to XAML without it being shown explicitly in the output

我有这样的类型:

// using System.Collections.Generic;
// using System.ComponentModel;
// using System.Windows.Markup;

[ContentProperty("Children")]
class Parent
{
    public Parent()
    {
        this.Children = new List<Child>();
    }
    [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
    public List<Child> Children { get; set; }
}

我希望 XamlServices.Save 像这样序列化它:

<Parent>
  <Child />
  ...
</Parent>

但我最终得到这样的结果:

<Parent xmlns:scg="clr-namespace:System.Collections.Generic;assembly=mscorlib">
  <scg:List ...>
    <Child />
    ...
  </scg:List>
</Parent>

我不想在 XAML 输出中看到 <scg:List>

我做错了什么?

解决方案非常简单:声明 Children 属性 setter private 而不是 public:

public List<Child> Children { get; private set; }
//                                 ^^^^^^^
//                                add this!

其他一切保持不变。