wpf - 如何设置从 DependencyObject 派生的类型的 DependencyProperty 的默认值

标签 wpf

我正在创建一个 不是 UserControl 的自定义 WPF 控件。此自定义控件具有两个属性(UnselectedAppearance 和 SelectedAppearance)。这两个属性都是从 DependencyObject 派生的相同类型(外观)。 Appearance 类本身有几个 DependencyProperties。我想知道为每个外观属性设置默认值的正确方法。我试过如下代码,但当我尝试在设计器中使用我的自定义控件时抛出异常。

public static readonly DependencyProperty UnselectedAppearanceProperty = DependencyProperty.Register("UnselectedAppearance", typeof(Appearance), typeof(FNDie), new PropertyMetadata(new Appearance()));

有什么办法可以做到这一点吗?

最佳答案

依赖属性的默认值在该依赖对象的所有实例之间共享,因此 null 以外的值通常只对值类型或不可变类有意义。换句话说,您可能会通过艰难的方式了解到 null 可能是您的最佳选择。

如果您迫切需要为依赖属性设置一个可变引用值,您可以将默认值保留为 null 并在构造函数中设置它。但是,您应该知道,这样做会使该属性无法使用样式进行设置,这可能是一个严重的限制,具体取决于您的需要。

关于wpf - 如何设置从 DependencyObject 派生的类型的 DependencyProperty 的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5850859/

相关文章:

wpf - 在wpf中使用aforge videosouceplayer

c# - WPF从按钮传递按钮内容?

c# - 如何处理在 WPF (C#) 中制作带参数的窗口?

.net - AutomationProperties.Name VS x :Name

wpf - WPF 数据绑定(bind)是否会将更改编码到 UI 线程?

c# - 更改 ListView 中的确切滚动位置

WPF Square 自动调整父容器的大小

wpf - 在 WPF 中,如何在具有焦点的窗口部分周围放置边框?

c# - 将转换器从 dll 导入 XAML

c# - 有没有一个WPF库可以绘制数学表达式?