我正在创建一个派生自 TextBox
的自定义控件。我试图覆盖其 Height
属性的默认值,但我不断收到类型不匹配的错误。
Metadata override and base metadata must be of the same type or derived type.
关于 MSDN它指出 Height
属性的类型为 System.Double
。
我尝试过以下方法:
1) 转换为 double
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
的类型,
您必须使用 FrameworkPropertyMetadata
而不是 UIPropertyMetadata
,因为这就是 HeightProperty
元数据类型。
HeightProperty.OverrideMetadata(typeof(SuggestionTextBox), new FrameworkPropertyMetadata(Convert.ToDouble(200)));
关于c# - 覆盖 TextBox 高度属性默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19478939/