티스토리 뷰

반응형

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로 출력

 

반응형
댓글
공지사항