.NET MAUI - XAML 이벤트 핸들링

2022. 7. 6. 00:00MAUI

반응형

.NET MAUI는 표준 .NET 이벤트를 통해 사용자 입력 및 상호 작용을 응용 프로그램에 알린다.

 

Xaml 페이지 각 Elements (controls) 에 이름 지정

각 컨트롤에 고유한 이름을 할당할 수 있다. 이렇게 하려면 XAML 특성 x:Name을 사용한다.

 

x:Name 속성은 다음 두 가지 작업을 수행

  • 코드 숨김 파일에  이것에 대한 개인 필드를 추가.
    코드에서 이 필드를 사용하여 시각적 요소와 상호 작용하여 런타임 속성을 설정하고 이벤트를 처리한다.
  • 요소는 이 이름을 통해 XAML에 알려진다.
    동일한 XAML 파일에 정의된 다른 요소에서 이러한 요소를 참조할 수 있다.

Xaml  의 Label element 에 x:Name 속성을 사용하여 이름 할당

<Label Text="Current count: 0"
        ...
        x:Name="CounterLabel"
        ... />

behind 코드 CounterLabel 이라는 Label 변수를 만들고 그것을 사용

count++;
CounterLabel.Text = $"Current count: {count}";

속성을 사용하여 event 연결

다양한 컨트롤은 다양한 이벤트 세트를 지원한다. 

 

Button 컨트롤

Clicked

Pressed

Released 

...

 

Entry 컨트롤

TextChanged.

...

 

event handler 는 다음과 같이 생성되어야 한다. 

private void OnCounterClicked(object sender, EventArgs e)
{
    ...
}

외부에서 접근하지 못하도록 private 이어야 하고

Sender (이벤트를 발생시킨 개체)EventArgs (이벤트 핸들러에 전달한 인수) 로 이루어져야 한다. 

 

관심의 분리 (Seperation of Concerns)

Xaml 에서 Clicked 에 OnCounterClicked 같은 핸들러를 연결 하는 것은 편리하지만

Control 의 동작을 UI 정의와 혼합한다. 

Xaml 에서 실수로 처리기를 제거 하면 컴파일러에 의해 포착되지 않으며

Clicked 이벤트가 발생했을때만 문제를 발견할 수 있다. 

 

그래서 다음과 같은 방법을 사용하기도 한다. 

public partial class MainPage : ContentPage, IPage
{
    public MainPage()
    {
        InitializeComponent();
        Counter.Clicked += OnCounterClicked;
    }

    ...

    private void OnCounterClicked(object sender, EventArgs e)
    {
        ...
    }
}

그러나 Xaml 에서 직접 연결할지 Code 에서 연결할지 여부는 개인 선택이다. 

 

 

 

관련영상

https://youtu.be/eCwQW_E3vZM

 

반응형