重写TextBox height属性的默认值

Omr*_*ian 2 c# wpf textbox custom-controls

我正在创建一个源自的自定义控件TextBox。我试图覆盖它的Height属性的默认值,但是我不断收到类型不匹配的错误。

元数据覆盖和基本元数据必须是相同类型或派生类型。

MSDN上,它声明Height属性为类型System.Double

我尝试了以下方法:

1)转换为两倍

HeightProperty.OverrideMetadata(typeof(SuggestionTextBox), new UIPropertyMetadata(Convert.ToDouble(200)));
Run Code Online (Sandbox Code Playgroud)

HeightProperty.OverrideMetadata(typeof(SuggestionTextBox), new UIPropertyMetadata((double)200));
Run Code Online (Sandbox Code Playgroud)

2)试图找出默认值

HeightProperty.DefaultMetadata.DefaultValue
Run Code Online (Sandbox Code Playgroud)

返回Double.NaN

编辑:我在控件的静态构造函数中执行此操作,如MSDN上的示例所示

知道我如何可以覆盖它的默认值吗?

Nit*_*tin 5

问题不在于默认类型的值,而是与类型的PropertyMetaData,而不是UIPropertyMetadata您必须使用,FrameworkPropertyMetadata因为这是HeightProperty元数据类型。

HeightProperty.OverrideMetadata(typeof(SuggestionTextBox), new FrameworkPropertyMetadata(Convert.ToDouble(200)));
Run Code Online (Sandbox Code Playgroud)