【发布时间】:2015-08-28 10:29:40
【问题描述】:
我在 VB.NET 中创建了一个名为 ecTextBox 的自定义控件,它使用 Generic.xaml 中的控件模板。这行得通。
在自定义控件后面的代码中,我覆盖了构造函数中的元数据:
Public Sub New()
DefaultStyleKeyProperty.OverrideMetadata(GetType(ecTextBox), New FrameworkPropertyMetadata(GetType(ecTextBox)))
End Sub
在 MainWindow.xaml 中,我使用了一个简单的自定义控件
<ec:ecTextBox/>
效果很好。
但如果我抛出第二个控件或更改 MainWindow.xaml 中第一个 ecTextBox 的属性,我会收到消息“PropertyMetaData 已注册类型 ecTextBox”。
在我读过的 StackOverflow 中,C# 程序员应该使用 static-Keyword 作为构造函数。但是如果我将构造函数更改为
Shared Sub New
DefaultStyleKeyProperty.OverrideMetadata(GetType(ecTextBox), New FrameworkPropertyMetadata(GetType(ecTextBox)))
End Sub
第二个自定义控件不使用控件模板,而是显示为没有边框的普通文本框。
覆盖所有使用的 ecTextBox 控件的元数据并防止错误的正确方法是什么?
【问题讨论】:
标签: wpf vb.net xaml custom-controls