【问题标题】:WPF Custom Control VB.netWPF 自定义控件 VB.net
【发布时间】: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


    【解决方案1】:

    这是解决方案:

    Public Sub New()
        MyBase.New()
    End Sub
    
    Shared Sub New()
        DefaultStyleKeyProperty.OverrideMetadata(GetType(ecTextBox), New FrameworkPropertyMetadata(GetType(ecTextBox)))
    End Sub
    

    【讨论】:

      猜你喜欢
      • 2010-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-08
      • 1970-01-01
      • 1970-01-01
      • 2015-06-03
      • 1970-01-01
      相关资源
      最近更新 更多