0

我有一个行为,我想附加到多个控件并根据它们的类型,我想编写逻辑,为此我需要在运行时确定关联对象的类型,我想知道我该怎么做

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
    }
}

这行得通吗?

4

2 回答 2

1

您可以使用is关键字,这将获取类型和派生类型

protected override void OnAttached()
{
    base.OnAttached();
    if(AssociatedObject is TextBox)
    {
        //Do Something
    }

    else if(AssociatedObject is CheckBox)
    {
        //Do something else
    }
于 2013-03-05T02:53:21.060 回答
0

我更喜欢:

if(typeof(TextBox).IsAssignableFrom(AssociatedObject.GetType()))
{
   ...etc
}

这将适用于TextBox从它派生的任何类。

旁注:如果您打算将此行为用于控件(TextBox、ComboBox 等),最好将其更改为Behavior<FrameworkElement>. 这样您就可以访问FrameworkElement(IE LIFE ) 的所有常见功能,而无需强制转换为特定类型。

于 2013-03-05T02:30:11.260 回答