我有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);
我是否需要为每个属性声明单独的元数据,还是可以使用相同的元数据?
谢谢, 埃蒙
答案 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());
如果我在解释明显的事情,请原谅。