覆盖TextBox height属性的默认值

时间:2013-10-20 15:05:40

标签: c# wpf textbox custom-controls

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

  

元数据覆盖和基本元数据必须属于同一类型或派生类型。

<{3>}上的{p>表明Height属性属于System.Double类型。

我尝试了以下内容:

1)转换为双重

HeightProperty.OverrideMetadata(typeof(SuggestionTextBox), new UIPropertyMetadata(Convert.ToDouble(200)));

HeightProperty.OverrideMetadata(typeof(SuggestionTextBox), new UIPropertyMetadata((double)200));

2)试图通过

找出默认值
HeightProperty.DefaultMetadata.DefaultValue

返回MSDN

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

任何想法如何覆盖它的默认值?

1 个答案:

答案 0 :(得分:4)

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

HeightProperty.OverrideMetadata(typeof(SuggestionTextBox), new FrameworkPropertyMetadata(Convert.ToDouble(200)));