0

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

4

1 回答 1

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);
}
于 2012-08-08T18:25:58.203 回答