不止一次使用Same FrameworkPropertyMetaData

时间:2011-03-31 10:59:31

标签: c# wpf metadata dependency-properties

我有3个依赖属性和一个FrameworkPropertyMetadata,当我尝试在多个DP上使用元数据时,我遇到了崩溃。我不希望有3个重复的metadatam是否可以解决这个问题。

    static FrameworkPropertyMetadata propertyMetaData = new FrameworkPropertyMetadata("My Control", FrameworkPropertyMetadataOptions.BindsTwoWayByDefault);

    public static readonly DependencyProperty Property_A = DependencyProperty.Register("Property_A", typeof(string), typeof(MyControl), propertyMetaData);
    public static readonly DependencyProperty Property_B = DependencyProperty.Register("Property_B", typeof(string), typeof(MyControl), propertyMetaData);
    public static readonly DependencyProperty Property_C = DependencyProperty.Register("Property_C", typeof(string), typeof(MyControl), propertyMetaData);

我是否需要为每个属性声明单独的元数据,还是可以使用相同的元数据?

谢谢, 埃蒙

2 个答案:

答案 0 :(得分:1)

您需要为每个声明一个新的。

答案 1 :(得分:1)

如果你想避免代码重复(看起来合理),你可以编写类似于:

的简单实用方法
private internal static FrameworkPropertyMetadata CreateDefaultPropertyMetadata()
{
   return new FrameworkPropertyMetadata("My Control", FrameworkPropertyMetadataOptions.BindsTwoWayByDefault);
}

然后使用它:

public static readonly DependencyProperty Property_A = DependencyProperty.Register("Property_A", typeof(string), typeof(MyControl), CreateDefaultPropertyMetadata());
public static readonly DependencyProperty Property_B = DependencyProperty.Register("Property_B", typeof(string), typeof(MyControl), CreateDefaultPropertyMetadata());
public static readonly DependencyProperty Property_C = DependencyProperty.Register("Property_C", typeof(string), typeof(MyControl), CreateDefaultPropertyMetadata());

如果我在解释明显的事情,请原谅。