我有一个行为,我想附加到多个控件,并根据他们的类型,我想写逻辑,为此我需要在运行时确定关联对象的类型,我想知道怎么可以我这样做
class CustomBehavior:Behavior<DependencyObject>
{
protected override void OnAttached()
{
base.OnAttached();
if(AssociatedObject.GetType()==typeof(TextBox))
{
//Do Something
}
else if(AssociatedObject.GetType()==typeof(CheckBox))
{
//Do something else
}
//....
//...
else
//Do nothing
}
}
这会有用吗?
答案 0 :(得分:1)
您可以使用is
关键字,这将获取类型和派生类型
protected override void OnAttached()
{
base.OnAttached();
if(AssociatedObject is TextBox)
{
//Do Something
}
else if(AssociatedObject is CheckBox)
{
//Do something else
}
答案 1 :(得分:0)
我更喜欢:
if(typeof(TextBox).IsAssignableFrom(AssociatedObject.GetType()))
{
...etc
}
这适用于TextBox
以及从中派生的任何类。
附注:如果您打算对控件(TextBox,ComboBox等)使用此行为,则最好将其更改为Behavior<FrameworkElement>
。这样您就可以访问FrameworkElement
(I.E L.I.F.E)的所有常用功能,而无需转换为特定类型。