我正在创建一个自定义的WPF控件,它是不一个UserControl。此自定义控件具有两个属性(UnselectedAppearance和SelectedAppearance)。这两个属性都是从DependencyObject派生的相同类型(Appearance)。 Appearance类本身有几个DependencyProperties。我想知道为每个Appearance属性设置默认值的正确方法。我尝试过以下代码,但是当我尝试在设计器中使用自定义控件时会抛出异常。
public static readonly DependencyProperty UnselectedAppearanceProperty = DependencyProperty.Register("UnselectedAppearance", typeof(Appearance), typeof(FNDie), new PropertyMetadata(new Appearance()));
我有什么方法可以做到这一点吗?
答案 0 :(得分:3)
依赖项属性的默认值在该依赖项对象的所有实例之间共享,因此除null之外的值通常仅对值类型或不可变类有意义。换句话说,你可能会学到很难的方法,null可能是你最好的选择。
如果您迫切需要为依赖项属性设置可变引用值,则可以将默认值保留为null并在构造函数中设置它。但是,您应该知道,这样做会使该属性无法使用样式进行设置,这可能是一个严重的限制,具体取决于您的需求。
答案 1 :(得分:2)
你需要像这样使用Property MetaData
class MyValidation
{
public bool status
{
get { return (bool)GetValue(statusProperty); }
set { SetValue(statusProperty, value); }
}
public static readonly DependencyProperty statusProperty =
DependencyProperty.Register("status", typeof(bool), typeof(MyValidation),new PropertyMetadata(false) );
}
答案 2 :(得分:1)
您应该初始化您正在调用的构造函数中的所有非依赖项属性(这里是默认的无参数属性)。可以像使用new PropertyMetadata(new Appearance());