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 に答える