处理在运行时添加的控件的事件

时间:2018-09-27 06:35:20

标签: wpf vb.net controls

我正在运行时在WPF应用程序中添加控件,这些控件都是不同类型的控件,因此以UIElement的形式传递。然后,我获得了type的控制权,可以使用SetValue来设置属性。由于我有很多控件类型要实现,所以我现在想做的就是向每个控件添加一个事件,但是似乎只能使用Addhandler来执行此操作,这需要为每个控件添加很多额外的代码,如下所示下面。我正在寻找一种解决方案,以允许我无需使用Cast进行事先转换就可以将错误处理程序添加到UIElement中,我不确定是否可以这样做?

 Select Case Control.GetType()
                Case GetType(ExtendedTextBox)
                    Dim newControl As ExtendedTextBox = TryCast(Control, ExtendedTextBox)
                    'Dim newCtl As UIElement = TryCast(Control, ExtendedTextBox)
                    If newControl IsNot Nothing Then
                        newControl.SetValue(ExtendedTextBox.HorizontalAlignmentProperty, HorizontalAlignment.Left)
                        newControl.SetValue(ExtendedControlProperties.HighlightTextOnFocusProperty, True)
                        newControl.SetValue(ExtendedControlProperties.MandatoryProperty, True)
                        AddHandler newControl.HasErrors, AddressOf UpdateErrorStatus
                    End If

1 个答案:

答案 0 :(得分:0)

我在验证之前给“客户”添加了错误的前缀。就像在继承的控件中导致此问题一样,一旦删除,它就会按预期工作。