c# - 覆盖 TextBox 高度属性默认值

标签 c# wpf textbox custom-controls

我正在创建一个派生自 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/

相关文章:

wpf - 如何在 WPF 应用程序的客户端上缓存图像?

WPF 网页浏览器 : How to set element click event?

c# - 以编程方式设置滚动条的宽度

c# - 在 DWM 玻璃下使用 TextBox 进行测试

c# - MVC4 中未在 DropDownListFor() 上设置所选值

java - 在 Java 中使未处理的异常破坏程序

c# - 在 .NET 控制台客户端应用程序中使用 ASP.NET Core SignalR 从 Azure SignalR 接收消息

c# - 如何实现 SharpZipLib.Portable 所需的 VirtualFileSystem?

c# - 为什么使用 ASP.NET 验证器进行验证?

ios - 从 Swift 中的文本框循环用户输入