我正在运行时在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
答案 0 :(得分:0)
我在验证之前给“客户”添加了错误的前缀。就像在继承的控件中导致此问题一样,一旦删除,它就会按预期工作。