Microsoft.Toolkit.MVVM을 이용한 간단한 프레임워크 part7 - Windows Community Toolkit Upgrade
2022.04.21 - [WPF .NET] - Microsoft.Toolkit.Mvvm을 이용한 간단한 프레임워크 part6 - 유효성 검사 추가
2022.04.15 - [WPF .NET] - Microsoft.Toolkit.Mvvm을 이용한 간단한 프레임워크 part5 - [ObservableProperty] 속성(2/2)
2022.04.14 - [WPF .NET] - Microsoft.Toolkit.Mvvm을 이용한 간단한 프레임워크 part5 - Service 추가(1/2)
2022.03.03 - [WPF .NET] - Microsoft.Toolkit.Mvvm을 이용한 간단한 프레임워크 part4 - LayerPopup 추가
2022.03.02 - [WPF] - Microsoft.Toolkit.Mvvm을 이용한 간단한 프레임워크 part3 - Busy 화면 구현
2022.02.24 - [WPF] - Microsoft.Toolkit.Mvvm을 이용한 간단한 프레임워크 part2 - Frame Navigation
2022.02.21 - [WPF] - Microsoft.Toolkit.Mvvm을 이용한 간단한 프레임워크 part1
Microsoft.Toolkit이 Windows Community Toolkit으로 통합이되었습니다. 그 과정에 MVVM 부분도 변경이되었는데..
업그레이드 과정과 몇가지 변경된 사항을 설명하도록 하겠습니다.
1. WpfFramework.csproj 수정
Nuget package 변경
<!-- 제거
<PackageReference Include="Microsoft.Toolkit.Mvvm" Version="7.1.2" />
-->
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.0.0" />
CommunityToolkit.Mvvm은 .Net 6 이상 지원이기 때문에 프레임워크도 변경해야합니다.
<TargetFramework>net6.0-windows</TargetFramework>
.Net 6로 프레임워크를 변경하니 SqlClient도 버전 올려야하네요..ㅋ
<PackageReference Include="System.Data.SqlClient" Version="4.8.5" />
2. c# 코드 페이지에 using 문 수정
이전
using Microsoft.Toolkit.Mvvm.ComponentModel;
using Microsoft.Toolkit.Mvvm.Input;
using Microsoft.Toolkit.Mvvm.Messaging;
이후
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using CommunityToolkit.Mvvm.Messaging;
3. ObservableValidator 변동 사항
이전
아래와 같이 사용하면, CompanyName 프로퍼티가 자동으로 생성되고, Required가 자동으로 적용이 되어서, 값이 없으면, 테두리가 빨간색으로 변했습니다.
[ObservableProperty]
[Required]
[MaxLength(40)]
private string _companyName;
이후
이제는 Validator가 유효성 검사를 하기위해서는 SetProperty에 유효성 검사 여부를 추가해 주어야 합니다. 그래서, 결국 SetProperty 메소드를 이용해야지만 유효성 검사를 할 수 있으니 자동 프로퍼티 생성은 사용할 수 없고 아래와 같이 private와 public를 만들어서 사용해야 합니다.
private string _companyName;
[Required]
[MaxLength(40)]
public string CompanyName
{
get { return _companyName; }
set { SetProperty(ref _companyName, value, true); }
}
아래는 SetProperty 코드로 validate 여부가 추가되어 있습니다.
[RequiresUnreferencedCode("The type of the current instance cannot be statically discovered.")]
protected bool SetProperty<T>([NotNullIfNotNull("newValue")] ref T field, T newValue, bool validate, [CallerMemberName] string propertyName = null!)
{
ArgumentNullException.ThrowIfNull(propertyName);
bool propertyChanged = SetProperty(ref field, newValue, propertyName);
if (propertyChanged && validate)
{
ValidateProperty(newValue, propertyName);
}
return propertyChanged;
}
실행
수정된 Company Name만 Validate되는 것을 확인할 수 있습니다.
4. 소스
추가로 변동 사항이 있으면 이 포스트를 통해서 알려드리겠습니다.
GitHub - kaki104/WpfFramework at part8/update-windowscommunitytoolkit
GitHub - kaki104/WpfFramework
Contribute to kaki104/WpfFramework development by creating an account on GitHub.
github.com