2012-09-20 3 views
2

C# xaml에서 프로그래밍 방식으로 단추를 클릭하고 싶습니다. PerformClick 같은 메소드가 없다는 것을 알았습니다. 그 대안은 무엇입니까?Windows 8 단추 C# 및 Xaml에서 프로그래밍 방식으로 클릭하십시오.

사실 나는 x : 이름이 btn1, btn2, btn3 등과 같은 10 개의 버튼을 가지고 있습니다 ... 이 번호를 기반으로 1에서 10까지의 숫자가 있는데이 버튼을 클릭해야합니다. 사용하여 컨트롤을 얻으려고했다

ParentControl.FindName('btn' + number) 

그런 다음 이벤트를 발생시킵니다. 그러나 Windows 8 C#에는 PerformClick 메서드가 없으므로 이에 대한 대안이 필요합니다.

Raiseevent enter image description here

+0

이 버튼은'ICommand' 인스턴스에 바인딩하고 있습니까? – Dennis

+0

아무 버튼도 ICommand에 바인딩되지 않았습니다 –

답변

6

여기

의 당신이 당신의 XAML 파일에 정의이 버튼이 있다고 가정 해 봅시다 ... 그 방법은 다음과 같습니다

<Button Grid.Column="0" Grid.Row="0" x:Name="DefaultSnooze" Content="Default Snooze" Click="SendToast_Click" Height="34" Width="134"/> 

그런 다음 Click 이벤트 핸들러 코드를 원하는 위치에 뒤에 코드에서이 작업을 수행 프로그래밍 방식으로 해고 당 :

ButtonAutomationPeer peer = new ButtonAutomationPeer(DefaultSnooze); 

IInvokeProvider invokeProv = peer.GetPattern(PatternInterface.Invoke) as IInvokeProvider; 
invokeProv.Invoke(); 

나는 지금 테스트를 거쳤으며 제대로 작동합니다. :)


출처 : How to programmatically click a button

-1

당신은 사용할 수 있어야하십시오 XAML 뷰의 코드 숨김에서

RaiseEvent(new RoutedEventArgs(Button.ClickEvent, myButton)); 

.

RaiseEvent은 모든 UIElement 파생 클래스에서 사용할 수 있습니다.

+0

나는 이것을 사용하려고했지만 이들은 raise 이벤트의 UIElement에있는 메소드가 아닙니다. 위의 스냅 샷을 보시기 바랍니다 –

+0

@BalrajSingh 아니요, 정적 방법은 아닙니다. 단순히 "RaiseEvent"를 사용해보십시오, 거기에 있어야합니다. –

+0

나는 그 사건을 찾으려고 노력했다. 정확히 어디에서 찾을 수 있는지 말해 주시겠습니까? WinRT 프레임 워크가 나에게 새로운 것이기 때문에. 나는 시도했지만 찾지 못했습니다. –

관련 문제