XamlWriter跳过模板属性

时间:2012-08-06 19:16:40

标签: c# wpf xaml

有没有办法告诉XamlWriter在写出字符串时跳过模板属性?我试图在视觉上模仿一个类,但在输出中保存另一个类。我将通过解析字符串来更改类名,但我想跳过模仿外观的样式。

1 个答案:

答案 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);
}