如果我创建一个扩展类UserControl
并希望为在DependencyProperty
中声明的a 设置默认值UserControl
,例如FontSize
,我可以添加一个静态构造函数,如下所示:
static MyUserControl()
{
UserControl.FontSizeProperty.OverrideMetadata(typeof(MyUserControl),
new FrameworkPropertyMetadata(28.0));
}
在了解该OverrideMetadata
方法之前,我曾经重写该属性并按DescriptionAttribute
以下方式设置:
public new static readonly DependencyProperty FontSizeProperty =
DependencyProperty.Register("FontSize", typeof(double), typeof(MyUserControl),
new PropertyMetadata(28.0));
[Description("My custom description."), Category("Text")]
public new double FontSize
{
get { return (double)GetValue(FontSizeProperty); }
set { SetValue(FontSizeProperty, value); }
}
当用户将鼠标指针移到相关属性名称上时,该DescriptionAttribute
值将在 Visual Studio 的“属性”窗口中显示为弹出工具提示。我的问题是,是否可以以类似于覆盖元数据的方式设置DescriptionAttribute
this 的值?DependencyProperty
还是我必须保留 CLR getter/setter 属性和属性声明?
提前谢谢了。