我正在创建一个源自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上的示例所示
任何想法如何覆盖它的默认值?
答案 0 :(得分:4)
问题不在于默认值类型,而是类型为PropertyMetaData
,
您必须使用UIPropertyMetadata
,而不是FrameworkPropertyMetadata
,因为这是HeightProperty
元数据类型。
HeightProperty.OverrideMetadata(typeof(SuggestionTextBox), new FrameworkPropertyMetadata(Convert.ToDouble(200)));