重写文本框高度属性默认值

本文关键字:属性 默认值 高度 文本 重写 | 更新日期: 2023-09-27 18:36:19

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

元数据

重写和基元数据必须属于同一类型或派生类型。

在 MSDN 上,它指出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

返回 Double.NaN

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

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

重写文本框高度属性默认值

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

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