将 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!
其他一切保持不变。
我有这样的类型:
// 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!
其他一切保持不变。