1

ButtonRadioButton 컨트롤은 Silverlight에서 System.Windows.Controls.Primitives.ButtonBase을 상속하므로 Click 이벤트가 발생합니다. 그러나Silverlight : UI 자동화를 사용하여 RadioButton Click 이벤트를 시뮬레이션 하시겠습니까?

ButtonAutomationPeer peer = new ButtonAutomationPeer(myButton); 
IInvokeProvider ip = (IInvokeProvider)peer; 
ip.Invoke(); 

, 우리는 같은 일을하려고하면 우리가 ButtonClick 이벤트를 시뮬레이션하려면 그렇게 (라는 버튼 myButton을 주어)와 같은

, 우리는 ButtonAutomationPeer 클래스를 사용할 수 있습니다 RadioButton의 경우 이 RadioButtonAutomationPeer 클래스에 구현되어 있지 않음을 알게되었습니다 (따라서 Invoke()으로 전화 할 수 없음). RadioButton에 대한 Click 이벤트가 발생할 수있는 다른 방법이 있습니까?

답변

0

이 시도 :

RadioButtonAutomationPeer peer = new RadioButtonAutomationPeer(myRadioButton); 
IToggleProvider tp = (IToggleProvider) peer; 
while (tp.ToggleState != targetToggleState) 
{ 
    tp.Toggle(); 
} 

당신이 원하는 토글 상태를 알아야합니다 (끄기, 켜기 또는 불확정) 있습니다. 또는 다른 상태로 전환하려면 while 루프를 선택하고 Toggle을 호출하면됩니다.

분명히 이것은 클릭과 완전히 똑같은 것이 아닙니다. 당신이 명령에 라디오 버튼을 바인딩 한 경우 자동화가 작동하도록하기 위해 좀 더 명시과 같은 것을 할 수 밖에 될 수 있습니다

<RadioButton ... (don't set the Command property)> 
    <i:Interaction.Triggers> 
    <i:EventTrigger EventName="Checked"> 
     <i:InvokeCommandAction Command="{Binding MyCommand}" /> 
    </i:EventTrigger> 
    </i:Interaction.Triggers> 
</RadioButton> 

블렌드 SDK를 사용하여 (즉, 내가 "이다 : "xmlns), 당신은 RadioButton이 체크되었을 때 명령을 호출하고 있습니다. 개인적으로는 자동화 없이도 RadioButton에 명령을 바인딩하는 것 이상의 방법을 사용합니다. 명령이 바인딩으로 실행될 때 명확하지 않지만 트리거는 명확성을 추가하고 다음에 내가 볼 때 생각할 필요를 제거합니다. 코드.

관련 문제