2011-08-08 2 views
0

radio.Checked += new RoutedEventHandler(VariantChecked); 이 코드가 있다고 가정합니다. VariantChecked 메서드에 인수를 전달하려면 어떻게해야합니까? 어떤 구문을 적용해야합니까?WPF 라디오 버튼 이벤트 처리 질문

답변

1

생성하는 동안 데이터 객체를 RadioButton의 DataContext 또는 Tag 속성에 연결하십시오.

RadioButton radio=new RadioButton(); 
radio.DataContext=yourData; 

그런 다음 이벤트 처리기에서 다시 데이터를 얻을 :

void VariantChecked(object sender, RoutedEventArgs e){ 
    RadioButton radio=(RadioButton)sender; 
    YourData yourData=(YourData)radio.DataContext; 
} 

을 나는 가정 한 위의 예에서 당신은 클래스가 있거나 제공 할 YourData라는 이름의 구조체있다. 문자열이나 int 또는 다른 객체 유형과 같은 기본 요소를 통해이를 바꿀 수 있습니다. XAML에서 또한


위 작품 : 그것은 이러한 구성을 더 의미있게하기 때문에

<RadioButton Tag="Static Data, could also be a binding" ... 

여기에 내가 태그 속성을 촬영했지만, DataContext를도 수행 할 수있다. 이벤트 핸들러는 Tag 속성에서 캐스팅하는 경우를 제외하고는 동일합니다.

그런데
void VariantChecked(object sender, RoutedEventArgs e){  
    RadioButton radio=(RadioButton)sender;  
    string yourStringFromTag=(string)radio.Tag; 
} 

, 당신은 구체적인 제어 수준이지만 기본 클래스 지정 코드보다 일반적인하지 않음으로써 만들 수 있습니다 ...이 도움이

void VariantChecked(object sender, RoutedEventArgs e){  
    FrameworkElement fe=(FrameworkElement)sender;  
    string yourStringFromTag=(string)fe.Tag; 
} 

희망을

+0

마지막 예제에서 태그를 사용하여 속성을 어떻게 연결 했습니까? 하나 이상의 개체를 첨부 할 수 있습니까? – Sergey

+0

@ Sergey : 두 번째 예에서는 xaml을 통해 작업을 수행했습니다. 3. 예에서는 첨부하지 않았습니다. 이 예에서는 구체적인 클래스로 캐스트 할 필요가 없으며 기본 클래스를 가져올 수도 있음을 보여줍니다. 둘 이상의 개체를 연결하려면 구조체, 컨테이너 클래스를 선언하거나 Tuple-class (http://msdn.microsoft.com/en-us/library/system.tuple.aspx)를 사용하십시오. – HCL