.NET MAUI - MVVM SourceGenerator
2022. 8. 17. 00:00ㆍMAUI
반응형
[ObservableProperty]
ObservableObject 에서 SetProperty 를 통해 값의 변경을 통지하는 역할을 대신한다.
[ObservableProperty]
private string? name;
위에 내용은 아래와 같다
public string? Name
{
get => name;
set => SetProperty(ref name, value);
}
종속 속성 알림
만약 Name 을 변경하였을때 FullName 이라는 다른 Property 또한 변경이 통지되어야 한다면 다음과 같이 한다.
[ObservableProperty]
[NotifyPropertyChangedFor(nameof(FullName))]
private string? name;
실제 코드로 구현 한다면 아래와 같다.
public string? Name
{
get => name;
set
{
if (SetProperty(ref name, value))
{
OnPropertyChanged("FullName");
}
}
}
종속 명령 알림
Property 의 변경이 Command 를 실행 시키는 경우
[ObservableProperty]
[NotifyCanExecuteChangedFor(nameof(MyCommand))]
private string? name;
실제 코드로 구현 한다면 아래와 같다.
public string? Name
{
get => name;
set
{
if (SetProperty(ref name, value))
{
MyCommand.NotifyCanExecuteChanged();
}
}
}
유효성 검사 요청
ObservableValidator 를 상속해야함. NotifyDataErrorInfo 를 통해 수행 가능하다.
[ObservableProperty]
[NotifyDataErrorInfo]
[Required]
[MinLength(2)] // Any other validation attributes too...
private string? name;
다음과 같이 구현 된다.
public string? Name
{
get => name;
set
{
if (SetProperty(ref name, value))
{
ValidateProperty(value, "Value2");
}
}
}
메시지 전송
ObservableRecipient 를 상속해야함. NotifyPropertyChangedRecipients를 통해 수행 가능 한다.
[ObservableProperty]
[NotifyPropertyChangedRecipients]
private string? name;
다음과 같이 구현 된다.
public string? Name
{
get => name;
set
{
string? oldValue = name;
if (SetProperty(ref name, value))
{
Broadcast(oldValue, value);
}
}
}
관련영상
반응형
'MAUI' 카테고리의 다른 글
.NET MAUI - MVVM Dependency Injection 2/2 (AutoScan with Scrutor) (0) | 2022.08.19 |
---|---|
.NET MAUI - MVVM Dependency Injection 1/2 (0) | 2022.08.18 |
.NET MAUI - MVVM Messenger (0) | 2022.08.16 |
.NET MAUI - MVVM Command (0) | 2022.08.15 |
.NET MAUI - MVVM ObservableValidator (0) | 2022.08.12 |