2013-03-05 1 views
0

여러 컨트롤에 첨부하고 해당 유형을 기반으로하는 동작이 있습니다. 논리를 작성하고 싶습니다. 관련 개체의 유형을 결정해야합니다. 런타임에 나는 어떻게 할 수 있을지 궁금해했다.AssociatedObject의 실제 런타임 유형 결정

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

내가 선호 :이 TextBox을 위해 일을하고 그것에서 파생 된 클래스 것

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

.

사이드 노트 : 컨트롤 (텍스트 상자, 콤보 상자 등)에이 동작을 사용하려는 경우 Behavior<FrameworkElement>으로 변경하는 것이 좋습니다. 이렇게하면 특정 유형으로 변환 할 필요없이 FrameworkElement (I.E L.I.F.E)의 모든 공통 기능에 액세스 할 수 있습니다.

1

당신은 is 키워드,이 의지 픽업 유형 및 파생 된 유형을 사용할 수

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

    else if(AssociatedObject is CheckBox) 
    { 
     //Do something else 
    }