有没有办法告诉XamlWriter在写出字符串时跳过模板属性?我试图在视觉上模仿一个类,但在输出中保存另一个类。我将通过解析字符串来更改类名,但我想跳过模仿外观的样式。
答案 0 :(得分:1)
ShouldSerialize[PropertyName]
是自定义属性是否序列化的正确方法。如果它们是空的,则可用于跳过集合。
不幸的是,Xml编写类只在适当的Should Serialize
方法的属性的所有者内部查找。
但是,如果您试图跳过不属于您的属性,并且它是DependencyProperty,那么您很幸运。
您可以实施bool ShouldSerializeProperty(DependencyProperty)
并控制任何DependencyProperty,无论它是否属于您的班级。
为了跳过Template属性,您将其作为静态成员继承,因此代码如下所示:
protected override bool ShouldSerializeProperty(DependencyProperty dp)
{
if (dp == ContentControl.TemplateProperty) return false;
return base.ShouldSerializeProperty(dp);
}