0
我在VB.NET中創建了一個名爲的ecTextBox的自定義控件,該控件使用Generic.xaml中的控件模板。這樣可行。WPF自定義控件VB.net
在代碼自定義控件我在構造函數重載元數據的背後:
Public Sub New()
DefaultStyleKeyProperty.OverrideMetadata(GetType(ecTextBox), New FrameworkPropertyMetadata(GetType(ecTextBox)))
End Sub
在MainWindow.xaml我使用自定義的控制用一個簡單的
<ec:ecTextBox/>
這工作正常。
但是,如果我拋出第二個控件或更改MainWindow.xaml中的第一個ecTextBox的屬性,我收到消息「PropertyMetaData已經註冊了類型ecTextBox」。
在StackOverflow我讀過,C#程序員應該使用靜態 - 構造函數的關鍵字。但是,如果我改變構造函數
Shared Sub New
DefaultStyleKeyProperty.OverrideMetadata(GetType(ecTextBox), New FrameworkPropertyMetadata(GetType(ecTextBox)))
End Sub
不使用控制模板,但顯示爲無邊框的普通文本框的第二個自定義控制。
覆蓋所有使用的ecTextBox控件的元數據並防止錯誤的正確方法是什麼?