티스토리 뷰
Microsoft.Toolkit.MVVM을 이용한 간단한 프레임워크 part7 - Windows Community Toolkit Upgrade
kaki104 2022. 12. 12. 10:002022.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
'WPF .NET' 카테고리의 다른 글
Trigger를 사용해서 동적 UI 구성하기 Part2 (0) | 2022.12.21 |
---|---|
Trigger를 사용해서 동적 UI 구성하기 Part1 - Overview (0) | 2022.12.14 |
Prism Library를 사용하는 개발자를 위한 안내 Part7 - Create RegionAdapter (0) | 2022.12.06 |
Prism Library를 사용하는 개발자를 위한 안내 Part6 - TabControl Region Navigation (0) | 2022.11.30 |
Prism Library를 사용하는 개발자를 위한 안내 Part5 - Region & ContentControl Region Navigation (3) | 2022.11.25 |
- Total
- Today
- Yesterday
- Cross-platform
- ComboBox
- kiosk
- LINQ
- XAML
- dotNETconf
- ef core
- Bot Framework
- uno-platform
- .net
- UWP
- WPF
- #Windows Template Studio
- #MVVM
- MVVM
- Microsoft
- PRISM
- C#
- Always Encrypted
- Behavior
- .net 5.0
- #prism
- windows 11
- visual studio 2019
- Visual Studio 2022
- #uwp
- Build 2016
- IOT
- uno platform
- Windows 10
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |