프로그래밍/모바일개발
Xamarin 컨트롤 클릭 이벤트 추가
gspst
2023. 2. 19. 18:16
반응형
Xamarin에서 클릭 이벤트가 제공되지 않는 컨트롤에 이벤트를 만들어서 추가할 수 있다. 클릭 이벤트가 존재하지 않는 StackLayout 2개를 만들어서 해당 StackLayout이 클릭될 때 메시지를 출력해 보도록 하겠다.
StackLayout에 클릭 이벤트 추가 예제
TapGestureRecognizer tap = new TapGestureRecognizer(); // 탭제스쳐 선언
tap.Tapped += Tap_Tapped; // 탭제스쳐에 탭 이벤트 추가
stack1Layout.GestureRecognizers.Add(tap); // stack1layout에 생성한 제스쳐 추가
stack2Layout.GestureRecognizers.Add(tap); // stack2layout에 생성한 제스쳐 추가
private void Tap_Tapped(object sender, EventArgs e)
{
StackLayout selectedLayout = sender as StackLayout; // 클릭이벤트가 발생한 layout 호출
Label selectedLabel = selectedLayout.Children[1] as Label; // 라벨명 호출
string text = selectedLabel.Text; // 라벨명 텍스트 변환
if(text == "위치등록") // 선택된 라벨명 화면 출력
{
Toast.MakeText(MainActivity.MainActivityForAccess, text, ToastLength.Short).Show();
}
else if(text == "위치조회")
{
Toast.MakeText(MainActivity.MainActivityForAccess, text, ToastLength.Short).Show();
}
}
1. TapGestureRecognizer 클래스를 tap 객체로 만든다.
2. tap.Tapped += Tap_Tapped 이벤트를 추가한다.
3. 기존 생성해 놓은 stack1Layout과 stack2Layout에 GestureRecognizers.Add(tap) 하여 이벤트를 추가한다.
4. 이제부터 stack1Layout, stack2Layout을 클릭하면 Tap_Tapped 이벤트가 실행된다.
5. Tap_Tapped 이벤트에서 파라미터로 넘어온 object를 받아서 stack1Layout, stack2Layout 중 Label명으로 구분해서 화면에 출력한다.
- stack1Layout인 경우 "위치등록"을 Toast.MakeText로 출력
- stack2Layout인 경우 "위치조회"를 Toast.MakeText로 출력
반응형