【问题标题】:Overriding TextBox height property default value覆盖 TextBox 高度属性的默认值
【发布时间】:2013-10-20 15:05:40
【问题描述】:

我正在创建一个源自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 上的示例所示

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

【问题讨论】:

    标签: c# wpf textbox custom-controls


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢哥们。我会把它当作一天工作足够的标志......:P
    • 是的..特别是星期天 ;)
    猜你喜欢
    • 2019-07-26
    • 2011-01-03
    • 1970-01-01
    • 2015-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-03
    相关资源
    最近更新 更多