๐Ÿ“ฆ CommunityToolkit.Mvvm ์ด๋ž€?

  • Microsoft ๊ณต์‹ ๊ฒฝ๋Ÿ‰ MVVM ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
    - WPF, WinUI, MAUI, UWP ๋“ฑ์˜ .NET ๊ธฐ๋ฐ˜ App์—์„œ MVVM ๊ตฌ์กฐ ๊ตฌํ˜„์„ ๋„์™€์คŒ
  • C# Source Generator(์†Œ์Šค ์ƒ์„ฑ๊ธฐ)
    • df

 

  1. df
    - MVVM ๊ตฌํ˜„์— ํ•„์š”ํ•œ ๋ฐ˜๋ณต๋˜๋Š” ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ž๋™ ์™„์„ฑํ•ด์คŒ 

 

1๏ธโƒฃ CommunityToolkit.Mvvm ๊ฐœ์š”

๋”๋ณด๊ธฐ

๐Ÿ“ฆ CommunityToolkit.Mvvm ์ด๋ž€?

  • Microsoft ๊ณต์‹ ๊ฒฝ๋Ÿ‰ MVVM ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
    - WPF, WinUI, MAUI, UWP ๋“ฑ์˜ .NET ๊ธฐ๋ฐ˜ App์—์„œ MVVM ๊ตฌ์กฐ ๊ตฌํ˜„์„ ๋„์™€์คŒ 
  • C# Source Generator(์†Œ์Šค ์ƒ์„ฑ๊ธฐ)
    - MVVM ๊ตฌํ˜„์— ํ•„์š”ํ•œ ๋ฐ˜๋ณต๋˜๋Š” ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ž๋™ ์™„์„ฑํ•ด์คŒ 

 

 ๐Ÿ“š ๊ณต์‹ ๋ฌธ์„œ

- CommunityToolkit dotnet Git: GitHub Repository

 

 

- Microsoft Docs: Microsoft Learn / Learn / .NET / MVVM

 

 

โœ”๏ธ ํ•™์Šต ์ฃผ์š” ๋ชฉ์ฐจ


๊ธฐ๋Šฅ ์„ค๋ช…
[ObservableProperty] ์†์„ฑ ์ž๋™ ๊ตฌํ˜„ (prop + OnPropertyChanged)
[RelayCommand] ๋ช…๋ น ๊ตฌํ˜„ ์ž๋™ ์ƒ์„ฑ (ICommand + Execute/CanExecute ์ž๋™ํ™”)
ObservableObject INotifyPropertyChanged ๊ตฌํ˜„์„ ์‰ฝ๊ฒŒ ๋งŒ๋“œ๋Š” ๊ธฐ๋ณธ ํด๋ž˜์Šค
WeakReferenceMessenger ViewModel ๊ฐ„ ๋А์Šจํ•œ ๋ฉ”์‹œ์ง€ ํ†ต์‹  ์‹œ์Šคํ…œ
Ioc.Default DI ์ปจํ…Œ์ด๋„ˆ ํ†ตํ•ฉ ์ง€์› (Microsoft.Extensions.DependencyInjection ๊ธฐ๋ฐ˜)

 

2๏ธโƒฃ "NuGet ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž"์—์„œ, CommunityToolkit.Mvvm ์„ค์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•

๋”๋ณด๊ธฐ

โ‘  ์†”๋ฃจ์…˜ ํƒ์ƒ‰๊ธฐ์—์„œ ํ”„๋กœ์ ํŠธ ์šฐํด๋ฆญ  โ‘ก Nuget ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž ์‹คํ–‰

 

 

โ‘ข Nuget ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๋Š” ์„ค์น˜๋œ ํŒจํ‚ค์ง€ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ํƒญ์ด ์ตœ์ดˆ๋กœ ๋ณด์—ฌ์ง„๋‹ค.

 

 

โ‘ฃ "์ฐพ๊ธฐ" ํƒญ์œผ๋กœ ์ด๋™ํ•˜์—ฌ, โ‘ค CommunityToolkit.Mvvm ๊ฒ€์ƒ‰์–ด ์ž…๋ ฅ ํ›„, โ‘ฆ ์ตœ์‹  ์•ˆ์ • ๋ฒ„์ „์œผ๋กœ ์„ค์น˜ํ•œ๋‹ค.


 

3๏ธโƒฃ ์„ค์น˜๋œ ํŒจํ‚ค์ง€ ํ™•์ธ ๋ฐฉ๋ฒ•

๋”๋ณด๊ธฐ

โœ”๏ธ  ๋ฐฉ๋ฒ•1.  ํ”„๋กœ์ ํŠธ์˜ Dependencies >> Packages ์—์„œ ์„ค์น˜๋œ ํŒจํ‚ค์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

 

โœ”๏ธ  ๋ฐฉ๋ฒ•2.  .csproj ํŒŒ์ผ ๋‚ด๋ถ€ ItemGroup์— Package ํ•ญ๋ชฉ์ด ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค:


 

4๏ธโƒฃ (์ถ”์ฒœ) "NuGet ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž Console"์—์„œ, CommunityToolkit.Mvvm ์„ค์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•

๋”๋ณด๊ธฐ

โœ”๏ธ 1. Visual Studio ์—์„œ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž ์ฝ˜์†” ์‹คํ–‰

 

๋ฐฉ๋ฒ•1. Visual Studio ์ƒ๋‹จ ๋ฉ”๋‰ด์—์„œ ๋„๊ตฌ โ†’ NuGet ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž โ†’ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž ์ฝ˜์†” ์—ด๊ธฐ

๋ฐฉ๋ฒ•2.  (์ถ”์ฒœ) Visual Studio์—์„œ ctrl + q ๋‹จ์ถ•ํ‚ค โ†’ Package Manager Console ๊ฒ€์ƒ‰

 

 

โœ”๏ธ 2. ํŒจํ‚ค์ง€ ์„ค์น˜ ๋ช…๋ น์–ด ์‹คํ–‰

Install-Package CommunityToolkit.Mvvm

 

5๏ธโƒฃ ํ”„๋กœ์ ํŠธ ํŒŒ์ผ ํŒจํ‚ค์ง€ ์ฐธ์กฐ๋กœ, ๋นŒ๋“œ์‹œ ์ž๋™ ์„ค์น˜

๋”๋ณด๊ธฐ
<ItemGroup>
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.1.0" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="7.0.0" />
</ItemGroup>

 

ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์— ์ถ”๊ฐ€ํ•˜๋ฉด, ๋นŒ๋“œ์‹œ ์ž๋™ ์„ค์น˜๋œ๋‹ค.

๋นŒ๋“œํ•˜์ง€ ์•Š์œผ๋ฉด, ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

์†Œ์Šค์ฝ”๋“œ์— ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด, ์œ„ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ๋นŒ๋“œํ•œ ๋’ค ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.