2019๋ 5์ Microsoft Build ์ปจํผ๋ฐ์ค์์ ์ฐ๋ฆฌ๋ WinUI 3.0์ ๋ํ ๊ณํ์ ๊ณต์ ํ์ผ๋ฉฐ, ์ด๋ ์ ์ฒด ๊ธฐ๋ณธ Windows UI ํ๋ซํผ์ ํฌํจํ๋๋ก WinUI์ ๋ฒ์๋ฅผ ํฌ๊ฒ ํ์ฅํ ๊ฒ์ ๋๋ค. ์ฆ, ์ ์ฒด Xaml ํ๋ ์์ํฌ๊ฐ GitHub์์ ๊ฐ๋ฐ๋๊ณ NuGet ํจํค์ง๋ก ๋์ญ ์ธ ๋ฐฐ์ก๋ฉ๋๋ค.
WinUI ๋ก๋๋งต์ ์ด์ WinUI 3.0์ ๋ํ ์ต์ ๊ณํ์ผ๋ก ์ต์ ์ํ์
๋๋ค.
https://github.com/microsoft/microsoft-ui-xaml/blob/master/docs/roadmap.md
์์ธํ ๋ด์ฉ์ Build 2019 ์ปจํผ๋ฐ์ค ์ธ์ State of the Union: Windows ํ๋ ์ ํ ์ด์ ํ๋ซํผ ์ ์์ฒญํ ์๋ ์์ต๋๋ค.
๊ทํ์ ์๊ฒฌ์ ๋ฃ๊ณ ์ถ์ต๋๋ค. ์๋์ ๋ช ๊ฐ์ง ๊ตฌ์ฒด์ ์ธ ์ง๋ฌธ์ด ์์ต๋๋ค.
WinUI 3.0์ UWP Xaml ํ๋ ์์ํฌ, WPF, WinForms ๋ฐ MFC์ ๋นํด ๋ง์ ์ด์ ์ ์ ๊ณตํฉ๋๋ค.
๋ฐ๋ผ์ ์ฐ๋ฆฌ๋ ๋ชจ๋ ์ฌ๋์ด ์ ๊ท ๋ฐ ๊ธฐ์กด ์ฑ์์ WinUI 3.0์ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ํ๊ณ ์ ํฉ๋๋ค. ์ด ๋ฌธ์ ์ ์ ๊ทผํ ์ ์๋ ๋ช ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ผ๋ฉฐ ์ด๋ค ์์ญ์ ์ค์ ์ ๋์ด์ผ ํ๋์ง์ ๋ํ ์๊ฒฌ์ ๋ฃ๊ณ ์ถ์ต๋๋ค.
์ฐ๋ฆฌ์ ํ์ฌ ์๊ฐ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๊ณต์ฉ ์ธ์ด(์: .NET Core๋ฅผ ์ฌ์ฉํ๋ C#, C++/WinRT๋ฅผ ์ฌ์ฉํ๋ ํ์ค C++17) ๋ฐ ์ฑ ๋ชจ๋ธ + ํจํค์ง(UWP + AppX, Win32 + MSIX )์ ์ํ ์๋ก์ด Visual Studio 2019 ํ๋ก์ ํธ ํ ํ๋ฆฟ์ ๋ง๋ค ๊ณํ์ ๋๋ค.
์ด๋ค ํ ํ๋ฆฟ์ด ๊ฐ์ฅ ํฅ๋ฏธ๋ก์ฐ์ ๊ฐ์?
๊ฐ๋ฐ์ ํ๊ฒฝ์ ํ์ฌ UWP ์ฑ๊ณผ ์ ์ฌํฉ๋๋ค.
WinUI 3.0์๋ ๊ธฐ์กด WPF, Windows Forms ๋ฐ C++ Win32 ์์ฉ ํ๋ก๊ทธ๋จ์์ WinUI Xaml์ ์ฌ์ฉํ ์ ์๋ Xaml Islands ๊ฐ ํฌํจ๋ฉ๋๋ค.
Xaml ์ฌ์ ํ์ฌ ๋ฒ์ ์ Windows 10 2019๋ 5์ ์ ๋ฐ์ดํธ(1903)์์๋ง ์ง์๋์ง๋ง WinUI ๋ฒ์ ์ ์ด์ ๋ฒ์ ์ธ ํฌ๋ฆฌ์์ดํฐ ์ ๋ฐ์ดํธ(15063)์ ํธํ๋์ด์ผ ํฉ๋๋ค.
๋ฐ์คํฌํฑ ์ฑ ํ๋ํ๋ฅผ ์ํ Xaml Islands๋ฅผ ์๊ณ ๊ณ์ จ์ต๋๊น?Windows 10์์ ํ์ฅ๋ ์ด์ ๋ฒ์ ๊ณผ์ ํธํ์ฑ์ด Xaml Islands๋ฅผ ๋ ์ ์ฉํ๊ฒ ๋ง๋ค๊น์?
ํ์ฌ ์ต์ UWP SDK๋ก ๋์์ ๋ณ๊ฒฝํ๋ ๊ฒ๊ณผ ์ ์ฌํ๊ฒ ์ฑ์ ๋์ ๋ฒ์ ์ WinUI 3.0์ผ๋ก ์ ๋ฐ์ดํธํ์ฌ ์ด๋ฅผ ํ์ฉํด์ผ ํฉ๋๋ค.
UWP Xaml๊ณผ WinUI 3.0 ๊ฐ์ ํธํ์ฑ์ ์ต๋ํํ๊ณ ์ถ์ง๋ง ์ ๋ฐ์ดํธํ ๋ ๋ช ๊ฐ์ง ์์์ผ ํ ์ฌํญ์ด ์์ต๋๋ค.
1. ๋ค์์คํ์ด์ค ์ ๋ฐ์ดํธ
WinUI์ Xaml, ๊ตฌ์ฑ ๋ฐ ์ ๋ ฅ API์ ๋ํ ๋ฃจํธ ๋ค์์คํ์ด์ค๋ Windows UWP SDK ๋ฃจํธ ๋ค์์คํ์ด์ค์ ๋ค๋ฆ ๋๋ค.
| ์ด์ ๋ค์์คํ์ด์ค | ์ ๊ท ๋ค์์คํ์ด์ค(๊ฐ์) |
| - | - |
| Windows.UI.Xaml
| Microsoft.UI.Xaml
|
| Windows.UI.Composition
| Microsoft.UI.Composition
|
| Windows.UI.Input
| Microsoft.UI.Input
|
์ต์ํ .NET ์ฑ์ ๊ฒฝ์ฐ UWP ์ฑ์ ๋์์ WinUI 3์ผ๋ก ๋ณ๊ฒฝํ ๋ ๋ค์์คํ์ด์ค๋ฅผ ์๋์ผ๋ก ์ ๋ฐ์ดํธํ๋ ๋ฐ ๋์์ด ๋๋ ์ต์ ์ ํ์ ์ค์ ๋๋ค.
Visual Studio ๋๋ ๋ค๋ฅธ ๋๊ตฌ๊ฐ ์๋์ผ๋ก ๋ค์์คํ์ด์ค๋ฅผ ์ ๋ฐ์ดํธํ๋ฉด ๋์์ด ๋ ๊น์?
2. UWP ๋ฐ WinUI Xaml ๊ตฌ์ฑ ์์ ํผํฉ
WinUI 3.0์ ์ถ์ํ๋ ๊ฐ์ฅ ๋น ๋ฅธ ๊ฒฝ๋ก๋ ํผํฉ์ ์ง์ํ์ง ์๋ ๊ฒ์ ๋๋ค.
์ ํจ๊ป:
Microsoft.UI.Xaml.UIElement
๋ฐ Microsoft.UI.Composition.Visual
์์๊ฐ์ ์ฑ์์.
๊ทธ๋ฌ๋ ๊ฐ์ฅ ํฐ ์ฐ๋ ค ์ฌํญ ์ค ํ๋๋ ํนํ UWP Xaml ์ปจํธ๋กค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์์ฑํ๊ฑฐ๋ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๊ธฐ์กด UWP ์ฑ ๋ฐ ๊ตฌ์ฑ ์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํด ์์ฑํ ์ ์๋ ํธํ์ฑ ๋ฌธ์ ๋ฐ ์์
์
๋๋ค.
์๋ฅผ ๋ค์ด ๊ธฐ์กด ๋ฒ์ ์ Windows Community Toolkit ์ WinUI 3.0 ์ฑ์์ ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก Toolkit๊ณผ ์ด๋ฅผ ์ฌ์ฉํ๋ ๋ชจ๋ ์ฑ์ WinUI 3.0์ ์ฌ์ฉํ๊ธฐ ์ ์ ์
๋ฐ์ดํธํด์ผ ํฉ๋๋ค.
๋ชจ๋ UWP Xaml ์ปจํธ๋กค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ WinUI 3.0์ผ๋ก ์ ๋ฐ์ดํธํ ์ ์๊ธฐ๋ฅผ ํฌ๋งํ์ง๋ง ์ต์์ ๊ฒฝ์ฐ์๋ ๋ชจ๋ ์ฌ๋์ด ์ ๋ฐ์ดํธํ๋ ๋ฐ ์๊ฐ์ด ๊ฑธ๋ฆฐ๋ค๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค.
๊ธฐ์กด UWP Xaml ๊ตฌ์ฑ ์์์ WinUI 3.0 ์ฑ ๊ฐ์ ์์ ํ ํธํ์ฑ์ด ์ผ๋ง๋ ์ค์ํฉ๋๊น?
์ฑ ์ฝ๋์ ํจ๊ป ์ฝ๊ฒ ๋ค์ ์ปดํ์ผ ๋ฐ ์ ๋ฐ์ดํธํ ์ ์๋ UWP Xaml ์ ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋๋ WinRT ๊ตฌ์ฑ ์์๋ฅผ ๋ง๋ค๊ฑฐ๋ ์ฌ์ฉํฉ๋๊น?
WinUI 3์์ UWP Xaml ๊ตฌ์ฑ ์์๋ฅผ ์ฌ์ฉํ๋ ๋ฐ ์ ํธํ๋ ์๋ฃจ์ ์ ๋ฌด์์ ๋๊น?
์์ ๋ก๋๋งต ์ ์์ฝ๋ ์ ์ฒด 3.0 ๊ณํ์ ๋ํด ์ด๋ป๊ฒ ์๊ฐํ์ญ๋๊น? ์ ๊ท ๋ฐ ๊ธฐ์กด Windows ์ฑ์ WinUI๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๊น?
์ด๋ค ์ข ๋ฅ์ ์ฑ์ WinUI 3.0์ ์ฌ์ฉํ๊ณ ์ถ์ต๋๊น? ์ Win32 ์ฑ์ ๋ง๋ค๊ณ MSIX๋ก ํจํค์ง ํ์๊ฒ ์ต๋๊น? WPF ์ฑ์ ์ ๋ณด๊ธฐ๋ฅผ ์ถ๊ฐํ์๊ฒ ์ต๋๊น? Fluent UI๋ก C++ MFC ์ฑ ํ๋ํ?
๋ฌธ์ ๋ด์ฉ์์ ์ง๋ฌธํ์ ๋ด์ฉ์ ๋ํ ์ ์ ์ด๊ธฐ ์๊ฐ์ ๋๋ค.
์ ๋ ๋์์ธ ๋ฐ ์ฌ์ฉ์ ๊ด์ ์์ ์์ผ๋ฉฐ ์ฝ๊ฐ์ ๊ฐ๋ฐ ๊ฒฝํ์ด ์์ผ๋ฉฐ ๋น์ Silverlight/Windows Phone 7 ๊ฐ๋ฐ์ ๋งค์ฐ โโ๊ด์ฌ์ด ๋ง์์ง๋ง ์ง๊ธ์ ์ฝ๊ฐ ๋ถํ์ค๋ฅด๋ ๋๋์ด ๋ญ๋๋ค.
ํ ํ๋ฆฟ ์์ด๋์ด ๋ชฉ๋ก์ ์์ฒญํ๊ธฐ ์ ์ WPF, UWP, WinForms, MFC ๋ฑ ๊ฐ ํ๋ ์์ํฌ์์ ๊ฐ์ฅ ํฌ๊ณ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ์ฑ์ ๋ํ ์ผ์ข ์ ๊ฐ์ฌ๊ฐ ํ์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ด๋ฌํ ์ฑ์ "์ค๋ฃจ์ฃ"์ ์กฐ์ฌํ๊ณ ์ผ๋ฐ์ ์ธ UX ์๋๋ฆฌ์ค๋ฅผ ํ์ ํ์ญ์์ค.
๋ด ๋จธ๋ฆฌ ๊ผญ๋๊ธฐ์๋ ๋ค์์ด ์์ต๋๋ค.
์ด๋ค ๋ชจ๋ ๋๋ ์ผ๋ถ๋ ์๋ฆผ/๊ด๋ฆฌ ์ผํฐ์ WinRT/UWP ์์คํ ํตํฉ์ ์ด์ ์ ์ป์ ์ ์์ต๋๋ค.
์ด๋ฌํ ๋ชจ๋ ์ ํ๋ก์ ํธ ํ ํ๋ฆฟ์ ๊ธฐ๋ณธ ์ ๊ณต Windows.Xaml ๋ค์์คํ์ด์ค, WPF ์ปจํธ๋กค ํ ๋ง ๋ฐ WinForms ๋น์ฃผ์ผ ์คํ์ผ์ ํผํ๊ณ FabricWeb/Fluent ์ปจํธ๋กค ๋์์ธ๊ณผ ์ผ์นํ๋ ์ ํ ํ๋ฆฟ ๋ฐ ๋น์ฃผ์ผ ์คํ์ผ์ ์ ํธํด์ผ ํฉ๋๋ค.
๋ํ ๊ธฐ์กด WPF ๋ฐ WinForms ์ฑ์ด ์๋ ๊ฐ๋ฐ์๊ฐ ๊ฐ๋จํ using ๋ฌธ ๋๋ ๋งค๋ํ์คํธ ํญ๋ชฉ์ผ๋ก ์ ์ปจํธ๋กค ๋์์ธ์ ์ ๊ณตํ๋ WinUI 3.0 ์ข ์์ฑ์ ์ถ๊ฐํ ์ ์๋ ์ฌ์ด ๋ฐฉ๋ฒ์ด ์์ด์ผ ํฉ๋๋ค.
Xaml Islands๊ฐ ๋ ์ฝ๊ฒ ๊ฐ๋ฅํด์ง์ ๋ฐ๋ผ ๊ธฐ์กด webview ์ปจํธ๋กค, ์์ ์ ํ๊ธฐ, XAML ๊ธฐ๋ฐ ๋ํ ์์๋ฅผ ์๋ก ์ถ๊ฐ ํ๋ ๊ฒ์ฒ๋ผ ์ฝ๊ฒ ๋์ฒดํ ์ ์๊ณ ๋ํ ์์ ๋๋ ๊ธฐ์กด C# ๋ฐ C++ ์ฝ๋๊ฐ ํธ์ถํ ์ ์๋ ํ์ค ์ปจํธ๋กค์ ์ ํํ ์ ์์ต๋๋ค. ๊ทธ๋ค๋ง์ ์ฝ๋ ์จ๊น์ด ์์ต๋๋ค.
Xbox Next ์ฑ, NavigationView, Master/Details, Hubs, Modern Ribbon, NavigationViewTop ๋ฐ Pivot๊ณผ ๊ฐ์ ์ต์ ์ฑ ๋ฐ ํ์ด์ง ํ ํ๋ฆฟ์ XAML ์์ผ๋๋๊ฐ ์ ์๋ฆฌ์ ์๊ณ ์ํ ์ฝํ ์ธ ๊ฐ ์๋ ๋ชจ๋ Windows ํ๋ ์ ํ ์ด์ ํ๋ซํผ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
ํ์ฌ UWP XAML์์ ๊ฐ๋ฅํ์ง ์์ ์ด๋ฌํ ์๋๋ฆฌ์ค๋ ์ด๋ฌํ ์์ ์ ๋ ์ฝ๊ฒ ํ๊ธฐ ์ํด ์ปจํธ๋กค ๋ฐ ํ ํ๋ฆฟ์ด ์์ด์ผ ํฉ๋๋ค.
๋๊ตฐ๊ฐ๊ฐ ํ์ฌ Windows 10 SDK๋ฅผ ์ฌ์ฉํ์ฌ ์ต์ ๋ฒ์ ์ Visual Studio์์ ํ๋ก์ ํธ๋ฅผ ์ด ๋ ๋ฌป๋ ์ง๋ฌธ์ด์ด์ผ ํฉ๋๋ค. ๋ฒํผ์ ๋๋ฅด๋ฉด ๋ค์์คํ์ด์ค์ ์ฌ์ฉ์ ๋์ฒดํ๊ฑฐ๋ ์ต์ํ ์ปจํธ๋กค์ด ์๋ ๊ฒฝ์ฐ ํ๋๊ทธ๋ฅผ ์ง์ ํฉ๋๋ค.
์ ํ๋ก์ ํธ์์๋ ๊ธฐ๋ณธ๊ฐ์ด์ด์ผ ํ๋ฉฐ Windows SDK์ ํฅํ ๋ฒ์ ๊ณผ ํจ๊ป ์ค์น๋ nuget ํจํค์ง์ฌ์ผ ํฉ๋๋ค.
์๋ ์ ๋ฐ์ดํธ ๋ต๋ณ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์ ํ์ด์ง ๋ฐ ํ๋ก์ ํธ์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํฌํจํด์ผ ํ๋ฉฐ ์๋์ผ๋ก WinUI | ๋ค์์คํ์ด์ค ์ ๋ฐ์ดํธ๋ฅผ ์ํด ToDo ์ฃผ์ ์ถ๊ฐ | WinUI๋ก ์ด๋ํ์ง ๋ง์ญ์์ค .
์ฌ์ฉ์๋ก์ ์ ๋ Windows์์ ์คํ๋๋ ๋ชจ๋ ์ฑ์ด ์ด๋ค ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ๋ ๊ณตํต UI์ UX๋ฅผ ๊ณต์ ํ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
๋ ์ง์คํธ๋ฆฌ๋ฅผ ์ด์ง๋ฝํ๊ณ ์ ํฌ๋ฅผ ๋จ๊ธฐ์ง ์๊ณ ์ฑ์ ์ค์นํ๊ณ ์ถ์ต๋๋ค. (๊ทธ๋์ 100์ฃผ๋ )
๋ชจ๋ ์ฑ์ ์คํ ์ด ๋ด์์ ๋๋ Centennial ์ ํ ์ค์น ํ๋ก๊ทธ๋จ์์ ์ค์นํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ๋ชจ๋ ์ฑ์ ์์คํ ๋ฐ Windows ํด๋๋ฅผ ๊ฐ์ํํฉ๋๋ค.
์ํฌ๋ฆด์ WPF, WinForms ๋ฐ MFC ์ฑ์์ ์ฌ์ฉํ ์ ์์ด์ผ ํ๋ฉฐ WinUI 3.0 ์ข ์์ฑ ๋๋ ๋งค๋ํ์คํธ๋ฅผ ํตํด ๊ธฐ๋ณธ ์ ํ ํ๋ฆฟ์ ํฌํจ๋์ด์ผ ํฉ๋๋ค. CommonControls ๋ฐ ์ฐฝ ์คํ์ผ์ ์ํฌ๋ฆด ๋ฐ ํ์ฅ๋ ์ ๋ชฉ ํ์์ค์ ์ฌ์ฉํด์ผ ํฉ๋๋ค(ํ์ฌ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ๋์๊ฐ๊ธฐ ์ํด ์ฌ์ ์ํ ์ ์์).
Microsoft์ Win32 ๋น UWP ์ฑ์ ๋ชจ๋ WinUI 3.0์ผ๋ก ๋ค์ ์ปดํ์ผํด์ผ ์ํฌ๋ฆด ์ฐฝ ํ๋ ์, ๊ธฐ๋ณธ ๋ฉ๋ด, ThemeShadows, ์ปจํ ์คํธ ๋ฉ๋ด , ํ ์คํธ ํ๋, ์งํ๋ฅ ํ์์ค ๋ฑ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๊ทธ๋ฐ ๋ค์ ๊ธฐ์กด ์ฑ์ WinUI 3.0 ์ด์์ ๋๋กญํ์ฌ ๋ชจ๋ ์ปจํธ๋กค์ ๋ชจ์์ ์ ๋ฐ์ดํธํ๊ฑฐ๋ ์ ์ฒด UI๊ฐ ์ ๋ฐ์ดํธ๋ ๋๊น์ง ํ ๋ฒ์ ํ๋์ ๋ํ ์์๋ฅผ ์ ํ์ ์ผ๋ก ์ ์ฉํ๋ ๊ธฐ๋ฅ์ด ํ์ํฉ๋๋ค.
re: ๋ค์์คํ์ด์ค, ์กฐ๊ฑด๋ถ ๋ค์์คํ์ด์ค๊ฐ ํ์ํ ๊ฒฝ์ฐ์๋ ๋์์ ๋ฐ๋ผ ๋ณ๊ฒฝ๋ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค.
๋ด ๋ต๋ณ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ด๋ค ํ ํ๋ฆฟ์ด ๊ฐ์ฅ ํฅ๋ฏธ๋ก์ฐ์ ๊ฐ์?
๊ฑฐ์น ๊ฒ ๋ค๋ฆด ์๋ ์์ง๋ง UWP xaml ์ฑ์ด ํ์ ์์ฅ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค(Windows Phone์ด ์ถ์๋ ์ดํ๋ก ๋์ ํ๋ซํผ์ผ๋ก์ UWP์ ๋ํ ๊ฒฌ์ธ๋ ฅ์ด ๋ ์ด์ ์์). ๋๊ตฌ/์ํธ ์ด์ฉ์ฑ์ด ์์ผ๋ฉด ์ข๊ฒ ์ง๋ง WinUI 3.0์ ์ฃผ์ ์ด์ ์ด ๋์ด์ผ ํ๋ค๊ณ ์๊ฐํ์ง ๋ง์ญ์์ค.
๋ฐ๋ผ์ ๋ค์์คํ์ด์ค ์
๋ฐ์ดํธ ๋๊ตฌ(์ค์ ๋ก๋ ์ ์ญ ์ฐพ๊ธฐ ๋ฐ ๋ฐ๊พธ๊ธฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ํํ ์ ์์)์ UWP xaml๊ณผ WinUI xaml์ ํผํฉํ๋ ๊ฒ์ด ์ค์ํ๊ฒ ๋๊ปด์ง์ง ์์ต๋๋ค.
๋ํ ์ด๊ฒ์ ๋งค์ฐ ํ์ํ ๋งํ ์กฐ์น์ด๋ฉฐ Github์ ์ ์ฒด UI ํ๋ ์์ํฌ๋ฅผ ์คํ ์์ค๋ก ์ ๊ณตํ๋ ๊ฒ์ ๊ต์ฅํ๋ค๋ ๊ฒ์ ์ธ๊ธํ๊ณ ์ถ์ต๋๋ค! ์ด๋ ๊ฒ ํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค!
์ฐ์ , ์ด๊ฒ์ ํ๋ฅญํ ์์ง์์ ๋๋ค! ๋ถํํ๋ ๋๋ ๋ง์ดํฌ๋ก์ํํธ๊ฐ ๊ทธ๋ค์ ํ๋ซํผ์์ ๋ง์ง๋ง ๋ช ๋ช ์ ๊ฐ๋ฐ์๋ค์ ์ฒ๋ฆฌํ ๋ฐฉ์์ ์ฝ๊ฐ ์์ฒ๋ฅผ ๋ฐ์๋ค๋ ์ฌ์ค์ ๋ฌด์ํ ์ ์์ต๋๋ค. ํ์ฌ ๋ค์๊ณผ ๊ฐ์ ์ด์ ๋ก ์๋น์์ฉ ์ฑ ์๋ง UWP๋ฅผ ์ฌ์ฉํฉ๋๋ค.
1๋ฒ ํฌ์ธํธ๊ฐ WinUI๋ก ํด๊ฒฐ๋ ์ ์๋ค๋ ์ฌ์ค์ ์๊ฒ ๋์ด ๊ธฐ์ฉ๋๋ค. ๊ทธ๋์ WinUI์ ๋ฐ์ ์ ๋ํด ์ด๊ดํ๊ฒ ๋์์ต๋๋ค. ๋ถํํ๋ 2๋ ๋ ์ด์ ์ ์ฉ๋์ง ์์ต๋๋ค(๋ ์ด์ ๋ฉ์ง ์ฅ์น๊ฐ ์๋๋ผ ๋ฐ์คํฌํ๋ง ํด๋น). ์ด ๋ฌผ๊ฑด์ด ๋ฐฐ์ก๋ ๋(์ง๊ธ๋ถํฐ 1๋ ํ?) ๊ทธ ๋จ๊ณ์์ ๊ฐ๋ฐ์์๊ฒ ํ์ํ ๊ฒ์ ๋ฌด์์ธ์ง ๊ถ๊ธํฉ๋๋ค.
๋๋ ์๋น์ฌ๊ฐ ๋ ์ด์ ๋ฐฉ์ ์์ ์ผ๋ถ๊ฐ ์๋๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ ๋ฐฐ๋ ์ถ์ "์ ๋ต"์ผ๋ก ํญํดํ์ต๋๋ค. ๋ฐ๋ผ์ ์ํฐํ๋ผ์ด์ฆ ์ฑ์ ์ ํฉํ ์ ์๋ ์ ์ผํ ๋ฐฉ๋ฒ์ ๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ์ ๋ ๋๊ท๋ชจ WPF ์ฝ๋ ๊ธฐ๋ฐ์ Windows 10์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ค๊ณ ์๋ํ๊ณ ๋ง์ด๊ทธ๋ ์ด์ ํ๊ธฐ ์ํด WPF์์ WinUI๋ก์ ์ข์ ๋ง์ด๊ทธ๋ ์ด์ ์ ๋ต์ ๋ ๊ด์ฌ์ด ์์ต๋๋ค. ์๋น์์ฉ ์ฑ(ํ์ฌ UWP)์ ์ ๋ฐ์ดํธํด์ผ ํ๋ ๋จ์ ์ ์ฑ์ ์ธ๋ถ ๊ตฌ์ฑ ์์ ๊ฐ๋ฐ์(์: win ํดํท ๋ฑ). ๋๋ถ๋ถ์ ๊ฐ๋ฐ์(๋ด๊ฐ ์๊ณ ์์)๊ฐ ์๋น์/Windows ํด๋ผ์ด์ธํธ ๊ฐ๋ฐ์ ๊ด์ฌ์ ์์๊ธฐ ๋๋ฌธ์ ๋ ์ด์ ์ ๋ฐ์ดํธํ ์ ์๋ ์คํ ๊ฐ๋ฅํ ์ต์ ์ด ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ด๋ค ํ ํ๋ฆฟ์ด ๊ฐ์ฅ ํฅ๋ฏธ๋ก์ฐ์ ๊ฐ์?
.net core/xaml/C#์ด ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ์ธ์ด ์กฐํฉ์ด๋ผ๊ณ ์๊ฐํ๊ธฐ ๋๋ฌธ์ ์ฌ๊ธฐ์์ ๋ณด๊ณ ์ถ์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฌ๊ธฐ์์๋ ๋ง์ด๊ทธ๋ ์ด์ ํ ํ๋ฆฟ์ด ๋ ๋์ ๊ฒ์ ๋๋ค(๊ฐ๋ฅํ ํ ๋นจ๋ฆฌ ๋ชจ๋ ์ฌ๋์ ์ฐธ์ฌ์ํค๋ ค๊ณ ํ๋ฉด ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๊ณ ๋ ๊ณ ํต์ค๋ฌ์ธ ๊ฒ์ ๋๋ค).
๋๋ ์ด๊ฒ์ด ๋งค์ฐ ํ๋ฅญํ๋ค๊ณ ์๊ฐํ๊ณ ์ฐ๋ฆฌ๋ ์ด๊ฒ์ ๋ง์ด ์ฌ์ฉํ ๊ฒ์ ๋๋ค(๊ทธ๋ฌ๋ ์ค์ ๋ก๋ ๊ธฐ์ ๊ณ ๊ฐ์ด ์ฌ์ ํ Windows 7์ ์ฌ์ฉํ๊ณ ์๊ธฐ ๋๋ฌธ์ ์ ์ด๋ 1๋ ์ ๋ ์์ด์ผ ํฉ๋๋ค. MS ์ง์์ด ์ข ๋ฃ๋๋๋ผ๋ ํ์ฌ๋ Windows 7์ ์ฌ์ฉํ๊ฒ ๋ ๊ฒ์ ๋๋ค). ๊ทธ๋ฐ ๋ค์ WPF๋ฅผ WinUI 3์ผ๋ก ์ฒ์ฒํ ๋ง์ด๊ทธ๋ ์ด์ ํ ์ ์์ต๋๋ค.
๋ฐ์คํฌํฑ ์ฑ ํ๋ํ๋ฅผ ์ํ Xaml Islands๋ฅผ ์๊ณ ๊ณ์ จ์ต๋๊น?
์, ํ์ง๋ง ๋๋ฌด ๋ง์ ๊ณ ๊ฐ์ด Windows 7์ ์ฌ์ฉํ๊ณ ์์ผ๋ฏ๋ก ์ํฐํ๋ผ์ด์ฆ ๊ฐ๋ฐ์๋ฅผ ์ํ ์ต์ ์ด ์๋์์ต๋๋ค. ์๋น์์ ๊ฒฝ์ฐ ์ด์จ๋ UWP๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
Windows 10์์ ํ์ฅ๋ ์ด์ ๋ฒ์ ๊ณผ์ ํธํ์ฑ์ด Xaml Islands๋ฅผ ๋ ์ ์ฉํ๊ฒ ๋ง๋ค๊น์?
์ด ์ ํ์ด ๋ฐฐ์ก๋ ๋ ์ํฐํ๋ผ์ด์ฆ์์ ์ง์๋๋ ๋ชจ๋ Windows 10 ๋ฒ์ ์์ ์๋ํ๊ธฐ ๋๋ฌธ์ ์ข์ ์์์ ๋๋ค.
MS์ฉ ์๋น์ ์ฑ์ ๋๋ฌ์ต๋๋ค. ๋ชจ๋ MS์ ์ ํ์ผ๋ก ์ธํด ๋ ์ด์ ์ด๋ฅผ ์ํ ์ฌ์ง๊ฐ ์์ต๋๋ค. ์ด ๋ชจ๋ ์ต์ ์ ๊ฑด๋๋ฐ๊ณ ์์ด๋ฒ๋ฆฌ๊ฒ ์ต๋๋ค. UWP ์ฑ์ ์์ฒ ์๊ฐ์ ํฌ์ํ๊ธฐ ๋๋ฌธ์ ์ฌํ์ง๋ง ๊ณ ํต์ ๋ ์ ์๋๋ก ์ด ์ฃฝ์์ ๋นจ๋ฆฌ ๋ง๋ค์ด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ฝ์๋ ์ ์ฒด ์ด์ผ๊ธฐ๋ ํญ์ ์ต์ ์ํ์ด๋ฉฐ ๋ชจ๋ ์ฅ์น๋ฅผ ์ง์ํฉ๋๋ค. ๊ทธ ์ฝ์์ด ์ด๋ค ์์ผ๋ก ์งํ๋์๋์ง ์ฐ๋ฆฌ ๋ชจ๋ ์๊ณ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
Visual Studio ๋๋ ๋ค๋ฅธ ๋๊ตฌ๊ฐ ์๋์ผ๋ก ๋ค์์คํ์ด์ค๋ฅผ ์ ๋ฐ์ดํธํ๋ฉด ๋์์ด ๋ ๊น์?
๋ค์์คํ์ด์ค์ผ ๊ฒฝ์ฐ ๊ฒ์/๋ฐ๊พธ๊ธฐ๋ ํธ๋ฆญ์ ์ํํด์ผ ํฉ๋๋ค.
๊ธฐ์กด UWP Xaml ๊ตฌ์ฑ ์์์ WinUI 3.0 ์ฑ ๊ฐ์ ์์ ํ ํธํ์ฑ์ด ์ผ๋ง๋ ์ค์ํฉ๋๊น?
๋ ์ด์ ์ค์ํ์ง ์์ผ๋ฉฐ ์์ฒ ์๊ฐ์ ๊ฐ๋ฐ ์์ค์ ๊ฐ์ํ ์ฉ์๊ฐ ์์ต๋๋ค. ์ด์จ๋ ๋จ์ ์ฌ์ฉ์๋ ์์ต๋๋ค.
์ฑ ์ฝ๋์ ํจ๊ป ์ฝ๊ฒ ๋ค์ ์ปดํ์ผ ๋ฐ ์ ๋ฐ์ดํธํ ์ ์๋ UWP Xaml ์ ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋๋ WinRT ๊ตฌ์ฑ ์์๋ฅผ ๋ง๋ค๊ฑฐ๋ ์ฌ์ฉํฉ๋๊น?
์๋์.
WinUI 3์์ UWP ๊ตฌ์ฑ ์์๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ์ ํธํ๋ ์๋ฃจ์ ์ ๋ฌด์์ ๋๊น?
UWP ์์ผ๋๋(ํธ์คํ ๋ ๊ตฌ์ฑ ์์์ ์ผ์ข )
์์ ๋ก๋๋งต์ ์์ฝ๋ ์ ๋ฐ์ ์ธ 3.0 ๊ณํ์ ๋ํด ์ด๋ป๊ฒ ์๊ฐํ์ญ๋๊น? ์ ๊ท ๋ฐ ๊ธฐ์กด Windows ์ฑ์ WinUI๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๊น?
์ข ๋ ์ฑ์ํด์ ธ์ผ ํ ํ์๊ฐ ์๊ฒ ์ง๋ง, ์ ๋ 1~2๋ ์์ ๊ธฐ์ ๊ฐ๋ฐ์ ์ํด ์ด ๋ฌผ๊ฑด์ ์ฌ์ฉํ๊ณ ์๋ค๊ณ ๋ด ๋๋ค. ๋ง์ด๊ทธ๋ ์ด์ ์ด ์ผ๋ง๋ ์ด๋ ค์ด์ง์ ๋ฐ๋ผ WinUI ๋๋ ์น์ ์ ํํฉ๋๋ค(Windows ์์ฒด๊ฐ "์งํํ๋" ๋ฐฉ๋ฒ์ ๋ฐ๋ผ ๋ค๋ฆ).
์ด๋ค ์ข ๋ฅ์ ์ฑ์ WinUI 3.0์ ์ฌ์ฉํ๊ณ ์ถ์ต๋๊น? ์ Win32 ์ฑ์ ๋ง๋ค๊ณ MSIX๋ก ํจํค์งํ์๊ฒ ์ต๋๊น? WPF ์ฑ์ ์ ๋ณด๊ธฐ๋ฅผ ์ถ๊ฐํ์๊ฒ ์ต๋๊น? Fluent UI๋ก C++ MFC ์ฑ ํ๋ํ?
์๋ง๋ WPF ์ฑ์ ์ ๋ณด๊ธฐ๋ฅผ ์ถ๊ฐํ๊ณ ์ฒ์ฒํ ๋ง์ด๊ทธ๋ ์ด์ ์ ์์ํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋๋ ์ด ๋ก๋๋งต์ ๋งค์ฐ ์ข์ํ๋ค. UWP๋ ์กฑ์์์ ํด๋ฐฉ๋์ด์ผ ํ๋ฉฐ ์ด๊ฒ์ด ๋ฐ๋ก ์ด๋ฅผ ์ํํ๋ ์ข์ ๋ฐฉ๋ฒ์ ๋๋ค.
์ด๊ฒ์ ๋ด ๊ณ ์ฉ์ฃผ์๊ฒ ๋งค์ฐ ์ค์ํฉ๋๋ค. ์คํ ์ด์ ๋ณต์กํ UWP ๋ฐ์คํฌํฑ ์ฑ์ด ์์ต๋๋ค. ์ด์ .NET ๋ค์ดํฐ๋ธ์์ ์ง์ํ์ง ์๋ win32 API์ ์ก์ธ์คํ๋ ค๋ฉด Desktop Bridge๊ฐ ํ์ํฉ๋๋ค.
๋๋ ์ํ๋ค
๊ธฐ์กด UWP Xaml ๊ตฌ์ฑ ์์์ WinUI 3.0 ์ฑ ๊ฐ์ ์์ ํ ํธํ์ฑ์ด ์ผ๋ง๋ ์ค์ํฉ๋๊น?
๊ธฐ์กด ์คํ์ผ์ ๊ณ์ ์๋ํด์ผ ํฉ๋๋ค. ๋๋ ์ฝ๊ฐ์ ์๊ฐ์ ๋ณํ๋ก ์ด ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ํ๋์ ๋ณํ๋ก๋ ๊ทธ๋ ์ง ์์ต๋๋ค.
์ฑ ์ฝ๋์ ํจ๊ป ์ฝ๊ฒ ๋ค์ ์ปดํ์ผ ๋ฐ ์ ๋ฐ์ดํธํ ์ ์๋ UWP Xaml ์ ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋๋ WinRT ๊ตฌ์ฑ ์์๋ฅผ ๋ง๋ค๊ฑฐ๋ ์ฌ์ฉํฉ๋๊น?
์๋์.
WinUI 3์์ UWP ๊ตฌ์ฑ ์์๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ์ ํธํ๋ ์๋ฃจ์ ์ ๋ฌด์์ ๋๊น?
์ฌ์ปดํ์ผํ ์ ์๋ ๊ฒฝ์ฐ(ํ์ฌ): Xaml Islands์ ์ ์ฌํ ์ ๊ทผ ๋ฐฉ์์ ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด WinUI 3์ผ๋ก ์ฝ๊ฒ ์ด์ํ ์ ์์ด์ผ ํฉ๋๋ค.
์ด๋ค ์ข ๋ฅ์ ์ฑ์ WinUI 3.0์ ์ฌ์ฉํ๊ณ ์ถ์ต๋๊น? ์ Win32 ์ฑ์ ๋ง๋ค๊ณ MSIX๋ก ํจํค์งํ์๊ฒ ์ต๋๊น? WPF ์ฑ์ ์ ๋ณด๊ธฐ๋ฅผ ์ถ๊ฐํ์๊ฒ ์ต๋๊น? Fluent UI๋ก C++ MFC ์ฑ ํ๋ํ?
_INotifyDataErrorInfo_์ ๊ฐ์ ํญ๋ชฉ์ ๋ํด ์ ๋ค์์คํ์ด์ค๋ฅผ ๋์ ํ์ง ๋ง์ญ์์ค. ์ผ๋ฐ์ ์ผ๋ก ํฌ๋ก์ค ํ๋ซํผ์ด๊ณ WinUI์ ๋ํ ์ข ์์ฑ์ด ์์ด์ผ ํ๋ ๋ทฐ ๋ชจ๋ธ์์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์ด์ ๊ฐ์ ๋ค๋ฅธ ํญ๋ชฉ์ด ์๋ ์์น๋ฅผ ์ ์ํด์ผ ํฉ๋๋ค(์: _INotifyPropertyChanged_ ๋๋ _INotifyCollectionChanged)_
๊ถ๊ทน์ ์ธ ๋ชฉํ๊ฐ ํ๋ซํผ ๊ฐ UI ์คํ์ ๋ง๋๋ ๊ฒ์ธ์ง ์๊ณ ์ถ์ต๋๋ค. ๊ทธ๊ฒ์ ์ดํดํ๋ ๊ฒ์ ์ฐ๋ฆฌ๊ฐ ์ด๋ป๊ฒ ๊ฑฐ๊ธฐ์ ๋๋ฌํ๋์ง ์์ ํ ์ดํดํ์ง ๋ชปํ ์๋ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ด ์๋๋ผ๋ฉด... ์ด ๋ ธ๋ ฅ์ ์์ ๋ถ๋ถ์์ Win ์ฐธ์กฐ ์์ด ์ด๊ฒ์ ๋ธ๋๋ํํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๊ทธ๋ ๊ฒ ํ๋ฉด ์ฅ๊ธฐ์ ์ผ๋ก ๋ํต์ด ๋ํ ๊ฒ์ ๋๋ค.
XamlUI ๋๋ ์ด์ ์ ์ฌํ ๊ฒ์ผ๋ก ๋ ์ด๋ธ์ XamlUI 3.0 ๋๋ ์ด์ ์ ์ฌํ ๊ฒ๊ณผ ๊ฐ์
๋ฌธ์ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ด ๊ณต๊ฐ์์ ๋ฌด์์ด ๋์ฌ์ง ๊ธฐ๋ํด์ฃผ์ธ์ :์ค๋ง์ผ:
๋์๊ฒ ๋ชจ๋ ๊ธฐ์ ์ ์ธ๋ถ ์ฌํญ์ ๋ ์ค์ํฉ๋๋ค.
UWP, WPF ๋๋ ๋ชจ๋ Windows ์ ์ฉ ํ๋ ์์ํฌ๋ ์๋ฌด๋ฆฌ ํ๋ฅญํ๋๋ผ๋ ๋ชจ๋ ํ๋ซํผ(์ต์ํ Windows, Droid, iOS ๋ฐ ์น)์์ ์คํ๋์ง ์๊ณ ๋ชจ๋ ํ๋ฉด ํฌ๊ธฐ.
TBH๋ ์ง๋ ๋น๋์์ MS๊ฐ UWP ๋๋ XAML ํฌ๋ก์ค ํ๋ซํผ์ ๋ง๋ค ๊ณํ์ด ์๋ค๋ ์ฌ์ค์ ์๊ณ ์ค๋งํ์ต๋๋ค. ์ฐ๋
ธ ๋ ์ฐ์ค ์ธ์๋ ๊ณต์์ ์ธ ์ธ์ ์ ๋ฐ์ง ๋ชปํ๋ค. ๋ ์ค๋ง์ค๋ฌ์ด ๊ฒ์ MS๊ฐ ์ฑ
์ ์๋ .NET ์คํ ๊ฐ๋ฐ์๋ฅผ ๋ฌด์ํ๋ฉด์ ๋ค์ React Native ๋ฐ HTML/JS ๊ธฐ๋ฐ ํ๋ ์์ํฌ(WinJS)์ ๋๋ฌด ๋ง์ ์ฌ๋์ ์ฃผ๊ณ ์๋ค๋ ์ฌ์ค์ ์๊ฒ ๋ ๊ฒ์
๋๋ค.
์ ๋ MS๊ฐ ๊ณต์์ ์ผ๋ก Uno์ ๊ฐ์ ํฌ๋ก์ค ํ๋ซํผ UI ์คํ์ ๋ง๋ค๊ณ ์ฌ๋ฐ๋ฅธ ๋๊ตฌ, ํ
ํ๋ฆฟ ๋ฐ ํตํฉ ์ง์์ ์ ๊ณตํ๋ ๊ฒ์ ๋ณด๊ณ ์ถ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ BTW, ์ ๋ MS๊ฐ XF๋ฅผ ์ธ์ํ ์ดํ๋ก XF์ ํจ๊ป ์ผํด ์์ผ๋ฉฐ ๋ค์๊ณผ ๊ฐ์ ์ด์ ๋ก XF์ ๋์์ด ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ์น ์ง์ ์์, b. ๋งค์ฐ ๋ชจ๋ฐ์ผ ํธํฅ, ๋ฐ์คํฌํ์ ๋ํ ์ฌ๋ ์์ c. WPF/UWP ์ ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋น๊ตํ ๋ ํ์คํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ณ์ธต ๊ตฌ์กฐ๊ฐ ์์ฑํ๊ฒ ๋๊ปด์ง๋๋ค. d. MS XAML์ ์ฌ์ฉํ์ง ์์ต๋๋ค.
๋ค์์ Microsoft ๊ฐ๋ฐ์ ์ปค๋ฎค๋ํฐ์ ๊ฒ์ํ ๊ธฐ๋ฅ ์์ฒญ์
๋๋ค. .NET UI Standard .
๊ฐ์ฌํฉ๋๋ค!
์น(์ด์
๋ธ๋ฆฌ)์์๋ ์คํ๋๋ XAML UI๊ฐ ํ์ํฉ๋๋ค. ์ต์ํ UWP์ ํ์ ์งํฉ์
๋๋ค.
UNO ํ๋ซํผ์ ์์ฉํ๊ณ SkiaSharp๋ฅผ ์ฌ์ฉํ์ฌ ์น ๋ ๋๋ง์ ๋ง๋ค์ง ์๊ฒ ์ต๋๊น?
WinUI ์ ์น ๋์๋ฌผ์ธ Silverlight 6 ์ผ ์ ์์ต๋๋ค.
.NET ํต์ฌ SDK ์คํ์ผ ํ๋ก์ ํธ ๋๋ ์ผ๋ถ ๋จ์ํ๋ MSVC ํ๋ก์ ํธ ํ์.
์ด์ ํ๋ก์ ํธ ํ์ผ์ ์๋์ผ๋ก ํธ์งํ๊ธฐ์๋ ๋๋ฌด ๋ณต์กํ๊ณ ์ด์ ํ๋ก์ ํธ ์์คํ
๊ณผ ์ ํ๋ก์ ํธ ์์คํ
์ฌ์ด์ ์๋ง์ ์ํธ ์์ฉ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ์์ ํ ์๋ก์ด ํ๋ก์ ํธ๋ฅผ ์ํด ๊ธฐ์กด ํ๋ก์ ํธ ์์คํ
์ ๋ฒ๋ ค์ผ ํฉ๋๋ค.
์๋์. ์ ์ฒด ๋ฐ์ดํฐ ๋ชจ๋ธ ๋ณ๊ฒฝ์ผ๋ก ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ค์ ์์ฑํ๊ณ ์์ผ๋ฏ๋ก ์ ์ง์ ๋ง์ด๊ทธ๋ ์ด์ ์ด ์์ต๋๋ค.
Windows 7์๋ ์ฌ์ ํ ๋ง์ ์ฌ์ฉ์๊ฐ ์์ผ๋ฉฐ Xaml Islands๋ ๋์์ด ๋์ง ์์ต๋๋ค.
์๋์. ๋ชจ๋ ๊ตฌ์ฑ ์์๋ ์์ฒด ์์ฑ๋๊ฑฐ๋ MUX ๋ฐ WCTK์์ ์์ฑ๋๋ฏ๋ก ๋น ๋ฅธ ์๋ ๋ง์ด๊ทธ๋ ์ด์ ์ ์ํํ ์ ์์ต๋๋ค.
๋ด ํ๋ก์ ํธ๊ฐ ํฌ์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค(ํ์ฌ ~20ํ์ด์ง ๋ฐ ~10์ฌ์ฉ์ ์ ์ ์ปจํธ๋กค).
์์ฃผ ์์ ๋๊ตฌ๋ฅผ ๋ง๋ค๊ณ KB ๋จ์๋ก ๋ฐฐ์กํ ์ ์๋๋ก OS์ ํจ๊ป ์ ๊ณต๋๋ ๋ฒ์ ์ด ์์์ผ๋ฉด ํฉ๋๋ค. ์ด ๋๊ตฌ๋ ์ฌ์ฉ์๊ฐ ์ฆ์ ์ ์๊ฒ ์ฐ๋ฝํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ฎ์ OS์์ ์คํ๋์ง ์์ต๋๋ค(์: ์ผ๋ถ ์ฑํ ์ํํธ์จ์ด๋ฅผ ํตํด).
์๋ก์ด Windows 10 ์ ์ฉ ์ฑ์ ๋ง๋ค๊ณ ์คํ ์ด ์์ด ๋ฐฐ์กํฉ๋๋ค.
์ ๋ขฐํ ์ ์๋ ์๋ช
์ ๊ฐ๋ณ ๊ฐ๋ฐ์์๊ฒ ๋น์ฉ์ด ๋ง์ด ๋ค๊ณ ์ ์ฅ์์ ์
๋ก๋ํ๋ ๊ฒ์ ์ฅ๊ธฐ ์ ํ๋ฆฌ์ผ์ด์
์ด ์๋ ๋๋ฉ์ธ ํน์ ์ ์ ์ฉํ ์ ์์ต๋๋ค.
xaml ์ธ์ด๋ ์ด๋ป๊ฒ ๋ ์ฌ๊ฐํ์ง ์์ผ๋ฉฐ "์ด๋ฅผ ์ด๋ป๊ฒ ํํํด์ผํฉ๋๊น?"์ ๊ฐ์ ๋ง์ ๋ฌธ์ ์ ์ง๋ฉด ํด ์์ต๋๋ค. WPF xaml๊ณผ UWP xaml์ ์์ ํ ํธํ๋์ง ์์ผ๋ฏ๋ก ์ฐจ์ด์ ์ ๊ธฐ์ตํด์ผ ํฉ๋๋ค. Xaml์ .NET ๊ธฐ๋ฅ๊ณผ ์์ ํ ํธํ๋์ง ์์ผ๋ฏ๋ก ๋๋๋ก ๋ด ๋ชจ๋ธ๊ณผ ๋์ฐ๋ฏธ ํด๋์ค์ ๋ช ๊ฐ์ง ์ถ์ ํ ํธ๋ฆญ์ ์์ฑํด์ผ ํฉ๋๋ค.
x:Bind
์ ํจ๊ป ์ค๋ฉด ์ํฉ์ ๋์ฑ ์
ํ๋ฉ๋๋ค. ๊ฐ๋จํ ์๋๋ฆฌ์ค๋ ์ฌ์ฉํ๊ธฐ ์ฝ์ง๋ง ์์ฑ ์ก์ธ์ค ์ด์์ ์์
์ ์ํํ๋ ๊ฒ์ ๋งค์ฐ ๋ณต์กํฉ๋๋ค. ์๋ฅผ ๋ค์ด ๋ฉ์๋ ์ค๋ฒ๋ก๋ฉ์ ์ง์ํ์ง ์์ผ๋ฏ๋ก ์ด ๋ฐ์ธ๋ฉ ์์ ๋ํด ์ด๋ค ์ค๋ฒ๋ก๋๊ฐ ์ ํ๋์๋์ง ํ์ธํ๊ธฐ ์ํด ์ปดํ์ผํด์ผ ํฉ๋๋ค. ๊ฐ๋จํ ์ ํ์ด๋ "์ผ๋ถ ์์ฑ์ด false์ผ ๋ ํ์" ๋ณํ์กฐ์ฐจ ํ ์ ์์ผ๋ฉฐ ๋์ฐ๋ฏธ ๋ฉ์๋๊ฐ ํ์ํฉ๋๋ค. ์ค๋ช
์์๋ ์ด๋ฌํ ์์ธํ ์๋๋ฆฌ์ค์ ๋ํ ์ค๋ช
์ด ์์ผ๋ฏ๋ก xaml-์ธ์ด ์ค๊ณ ํ ๋ก ์ ์ํ ์
์ฅ์ด ์์ด์ผ ํ๋ฉฐ xaml์ C#๊ณผ ๊ฐ์ด ์ง์งํ๊ฒ ์ค๊ณ๋ ์ธ์ด๋ก ๋ง๋ค์ด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
xaml ํธ์ง๊ธฐ๋ ์ฌ์ฉํ๊ธฐ ์ด๋ ต์ต๋๋ค. ๋์์ด๋๊ฐ ์ค์ ํจ๊ณผ๋ฅผ ํ์ํ๊ธฐ ์ํด ์ผ๋ถ ์ฝ๋๋ฅผ ์คํํ๋ ๊ฒ์ ํฉ๋ฆฌ์ ์ด์ง๋ง ํ
์คํธ ํธ์ง๊ธฐ๋ ๋ฉํ๋ฐ์ดํฐ๋ง ์ธ์ํด์ผ ํฉ๋๋ค. ์์ค ๋ณด๊ธฐ์์ xaml ํ์ผ์ ์ฌ๋ ๊ฒ์ ๋์์ด๋๋ฅผ ํ์ฑํํ๊ณ NullReferenceException
๋ฐ Cannot convert __ComObject to some type
์ ๊ฐ์ด ์์ ํ ๋ฏธ์ธํ๊ฒ ์คํ๋๋ xaml์ ๋ํ ์ผ๋ถ ์ํธ ์์ฉ ์์ธ๋ฅผ ๋ฐ์์ํค๊ธฐ ๋๋ฌธ์ ๋๋ฆฝ๋๋ค. ๋น๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํตํด ProjectReference
๋ฟ์ ์์กด์ฑ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(์ผ๋ฐ์ ์ผ๋ก ๋ฐ์ดํฐ ๋ชจ๋ธ์ ๊ตฌํ)์์ non-public-api ์์ญ์ ๊ฐ๋จํ๊ฒ ํธ์งํด๋ ๋ณต์กํ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. ๋ฐ๋ผ์ ๋ฉํ๋ฐ์ดํฐ์ ์์ค ์ฝ๋๋ฅผ ์ธ์ํ๋ ์์ ํ Roslyn ํตํฉ xaml ์ปดํ์ผ๋ฌ๊ฐ ์์ด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ ๋ณด ์ ์ฒด, ์ํ ์ ์ฒด ์์ฉ ํ๋ก๊ทธ๋จ์ด ํ์ ๋ชจ๋ธ ๋์ ๋ค์ค ์ฐฝ ๋ชจ๋ธ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์
๋๋ค. ํ์ฌ UWP์์ ApplicationView
์ฌ์ฉํ์ฌ ์ ์ฐฝ์ ๋ง๋๋ ๊ฒ์ ์ค๋ ๋ฉ ๋ฌธ์ ๊ฐ ์๊ธฐ ๋๋ฌธ์ ๊ณ ํต์ค๋ฝ์ต๋๋ค. ์๋ก์ด AppWindow
๋ UI ์ค๋ ๋๋ฅผ ๊ณต์ ํ๋ฉฐ UI ์ฑ๋ฅ์ด ํ์คํ์ง ์์ต๋๋ค.
๋์ค์ WinUI์์ Visual Studio๋ฅผ ๋ค์ ์์ฑํ๋ฉด ์ฑ์ํ UI ์์คํ ์์ ์ฆ๋ช ํ ์ ์์ต๋๋ค.
INotifyPropertyChanged
๊ตฌํํ๋ ๋ชจ๋ธ์ ๋ง๋๋ ๋ฐ ๋งค์ฐ ์ง์ณค์ต๋๋ค. xml์ ํ์ฅ๋ ์์ฑ ์ ๊ทผ์๋ก ๋ณํํ๋ ์ฌ์ฉ์ ์ง์ MSBuild ์์
์ ์์ฑํ์ง๋ง ์์ฑ์ด ๋ณ๊ฒฝ๋ ๋ setter์์ ์ฌ์ฉ์ ์ง์ ์์
์ ์ํํ๋ ค๋ ๊ฒฝ์ฐ์๋ ๋์์ด ๋์ง ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ค๋ ๋ฉ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๋ด ๋ฐ์ดํฐ๋ ์์ ํ ๋ฐฑ๊ทธ๋ผ์ด๋ ๋คํธ์ํฌ ์๋ฒ์์ ๊ฐ์ ธ์ค๊ธฐ ๋๋ฌธ์ await
๋ํ ์ปจํ
์คํธ ์บก์ฒ๊ฐ ๋์์ด ๋์ง ์์ต๋๋ค. WPF ๋ฐ Binding
์์๋ Binding
์ค๋ ๋ฉ ์์ฒด๋ฅผ ํด๊ฒฐํ๊ธฐ ๋๋ฌธ์ ๊ทธ๋๋ก์
๋๋ค. x:Bind
๋ณ๊ฒฝํ ๋ ์ด๋ฒคํธ ๋ฐ์๊ธฐ ๋ด๋ถ์์ ํด๊ฒฐํด์ผ ํฉ๋๋ค. x:Bind
๋ ํธ์ถ ์ค๋ ๋์์๋ง ์๋ํ๊ธฐ ๋๋ฌธ์
๋๋ค. ๋์ผํ ๋ฐ์ดํฐ๋ฅผ ํฐ์นํ๋ ์ฌ๋ฌ ์ ํ๋ฆฌ์ผ์ด์
๋ณด๊ธฐ๊ฐ ์๋ ๊ฒฝ์ฐ ์ํฉ์ด ๋์ฑ ์
ํ๋ฉ๋๋ค. ์ฆ, ์ฌ์ฉํ ์ ์๋ ์ ์ญ UI ๋์คํจ์ฒ๊ฐ ์๊ณ ์ ์ผํ ์๋ฃจ์
์ ์ด๋ฒคํธ ๋ฑ๋ก ์ SynchronizationContext.Current
๋ฅผ ์บก์ฒํ๋ ๊ฒ์
๋๋ค. ์ปฌ๋ ์
์ ๊ฒฝ์ฐ ItemsSource
๋ ์ค๋ ๋๋ก๋ถํฐ ์์ ํ์ง ์์ผ๋ฉฐ ๋์ผํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ํ์ํฉ๋๋ค.
๋ณ๊ฒฝ ๊ฐ๋ฅํ ๋ฐ์ธ๋ฉ ๊ฐ๋ฅํ ๋ชจ๋ธ์ ๋ํ ๋ชจ๋ธ๋ง, ์ค๋ ๋ฉ ๋ฐ ํ์ฅ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๋๊ตฌ ์ฒด์ธ์ด ์์ด์ผ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฐ์ธ๋ฉ ๊ฐ๋ฅํ ์ปฌ๋ ์ ์ ์ํ ์ผ๋ฐ์ ์ธ ๊ธฐ๋ณธ ์ ๊ณต ์๋ฃจ์ ์ "๋ณ๊ฒฝ๋ ์์์ ์ง์ ๋ ์์ฑ"์ ๋ํ ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํด์ผ ํฉ๋๋ค.
IObservableVector<T>
๋ object
๋ง ์ฌ์ฉํ ์ ์๋ ๊ฐ์ง ์ ๋ค๋ฆญ ์ ํ์ด๊ณ INotifyCollectionChanged
๋ ์ ๋ค๋ฆญ์ด ์๋๋๋ค. ObservableCollection<T>
์ ๊ฐ์ ๋ด์ฅ ์ปฌ๋ ์
์ ๋ํด ๊ตฌํํ๋ ๊ฒ๋ง์ผ๋ก๋ ์ถฉ๋ถํ์ง ์์ต๋๋ค. ํนํ ๋ณต์กํ ISupportIncrementalLoading
/ IItemsRangeInfo
์งํฅ ์๋๋ฆฌ์ค์ ๊ฒฝ์ฐ์๋ ๋์ฑ ๊ทธ๋ ์ต๋๋ค. ํ๋ซํผ์ ์ฌ์ฉ์๊ฐ ์ถ์ ๋ฐ์ดํฐ ์ฑ์ฐ๊ธฐ ๋ฐฉ๋ฒ์ ๊ตฌํํ ์ ์๋๋ก ๋ชจ๋ฒ ์ฌ๋ก์ ํจ๊ป ๊ธฐ๋ณธ ์ถ์ ๊ตฌํ์ ์ ๊ณตํด์ผ ํฉ๋๋ค.
@shaggygi @weitzhandler @TonyHenrique
XAML ๊ตฌ๋ฌธ์ ์ถ์ํํ๋ UWP/XamlUI3.0์ ๋ํ ํฌ๋ก์ค ํ๋ซํผ ๋ฏธ๋๊ฐ ์๋ ๊ฒฝ์ฐ Windows ๋ ๋๋ฌ ๋ฐ ๋๋จธ์ง Windows ๋ฐํ์์ด ์ด๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ด ๋ ๊ฒ์ ๋๋ค.
ํ๋ก์ ํธ์ ๊ฑฐ์ ํ๋ฌ๊ทธ์ธ ์ฌ๊ณ ๋ฐฉ์์ด ์์ ์ ์๋ค๋ฉด Android ๋๋ iOS/AppKit Renderer๊ฐ ์์ ์ ์์ผ๋ฉฐ Android/iOS AppKit Shim์ ART API๋ฅผ C# ๋ฐ VB๋ ๋ฌผ๋ก ๊ธฐ์กด C++, C ์ธ์ด๋ก ์ ๋ฌํฉ๋๋ค. ์ง์ํ๋ค.
์ฌ๊ธฐ์ Xamarin์ด ๋์์ด ๋ ์ ์์ต๋๋ค.
Microsoft๋ ์ด๋ฌํ ๋์ฒด ํ๋ซํผ ๋ ๋๋ฌ์์ ์์ ํ๋ ์ฌ๋์ผ ํ์๊ฐ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ์ง๊ธ์ Windows์ ์ง์คํ๊ณ ์์ต๋๋ค. WinUI 3.0์ Fabric Web / React Native / WPF / WinForms / MFC๋ฅผ ํฌ๊ดํ ์ ์์ต๋๋ค. PWA๋ ๋ํ ์ฑ ๊ฐ๋ฐ์ ์ํ 1๊ธ ์๋ฏผ์ด ๋ ๊ฒ์ด๋ฏ๋ก Windows/.NET/UWP์ฉ์ผ๋ก ์ง์ ์ ์๋์ง ์์ ์ฑ์ ๋ํ ํ๋ซํผ ๊ฐ ์คํ ๋ฆฌ๊ฐ ์์ต๋๋ค.
์ง๊ธ ํ์ํ ๊ฒ์ C#/.NET/UWP ๊ฐ๋ฐ์๊ฐ ์ฑ๊ณผ ํฌ์๋ฅผ ๋ ๋์ ํ๋ซํผ ํ๊ฒฝ์ผ๋ก ๊ฐ์ ธ๊ฐ ์ ์๋๋ก ์คํ ๋ฆฌ๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ ๋๋ค.
๋ด 2์ผํธ: ์ ๋ Xamarin.Forms ๊ฐ๋ฐ์์ด๊ณ (๋ค๋ฅธ ๋ง์ ์ฌ๋๋ค๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก) ๋ชจ๋ XAML ๋ฐฉ์ธ์ด ๋ชจ๋ฐ์ผ ๊ณต๊ฐ์ ํฌํจํ์ฌ ๋ชจ๋ ๊ณณ์์ ์๋ํ๋ ๋ฐฉ์ธ์ผ๋ก ๋ณํฉ๋๋ ๊ฒ์ ๋ณด๋ ๋ฐ ๊ด์ฌ์ด ์์ต๋๋ค. ๊ทธ๊ฒ์ด ์ด๋ป๊ฒ ๋ ์ง ํ์คํ์ง ์์ง๋ง ์ ์ด๋ ๊ทธ ๋ฌธ์ ์ ๋ํ ๋์ ๋ฐ๋์ ๋๋ค.
WinUI 3.0 ์ด์์ผ ์๋ ์์ง๋ง ๋ชจ๋ XAML์ ๋ค์ ์์ฑํ๊ณ ๋ฒ์ญํ ๊ฒ์ผ๋ก ์์ํ๊ธฐ์๋ ๋๋ฌด ๋ง์ WPF ์ฑ์ด ์์ต๋๋ค. ์ WPF ํ๋ก์ ํธ๋ ๋ณด๋ค ํ๋์ ์ธ WinRT XAML ์ธ์ด๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋์ผํ ํ๋ก์ ํธ์ ๋ค๋ฅธ ๋ฐฉ์ธ์ด ๊ณต์กดํ ์ ์๋๋ก DocType์ ํด๋นํ๋ ํญ๋ชฉ์ XAML์ ๋์ ํ ์ ์์ต๋๋ค.
๋ฌผ๋ก ๋ง๋ณด๋ค ์ฝ์ต๋๋ค.
@mdtauk ์ผ๋จ Xaml ํ๋ซํผ์ด ์ค์ ๋ก ์คํ ์์ค๋ก ๋ง๋ค์ด์ง๋ฉด ์คํ์ ๋งจ ์๋์ ์์กดํ๋ ๊ฒ์ ๋ํด ๋ ๋ช
ํํ๊ฒ ์ดํดํ๊ฒ ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค(์ฐ๋ฆฌ๋ ์ด๋ฏธ ์ฃผ์ ํ๋ซํผ๋ณ ์ข
์์ฑ์ด DirectX11, Direct2D ๋ฐ Windows Media Foundation, ๊ทธ๋ฌ๋ Windows SDK์ ์ด๋ค ๋ถ๋ถ์ด ๊ฑฐ๊ธฐ์์ ์ฌ์ฉ๋๋์ง ์๋ ์ฌ๋), ๊ณ์ธตํ ๋ฐฉ๋ฒ(๋ชจ๋ ์ด์์ ์คํ ๊ฐ๋ฅ์ฑ์ ๋ํ ์ค์ ๋๋์ ๊ฐ์ง ์ ์๋๋ก).
๋ํ ์ฐ๋ฆฌ๋ ์์ค ์ฝ๋๊ฐ ์ด๋ค ์ข
๋ฅ์ ๋ผ์ด์ ์ค๋ก ๋ฐฐํฌ๋๋์ง ์์ง ์์ง ๋ชปํฉ๋๋ค. ์์ง ๊ฒฐ์ ์ด ๋์๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
Android๋ Vulkan์ ์ฌ์ฉํ๋ฉฐ OpenGL์ ์ง์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
iOS ๋ฐ macOS๋ Metal์ ์ฌ์ฉํฉ๋๋ค.
๋ฏธ๋์ด ์ฝ๋ฑ์ ๊ฒฝ์ฐ ๋ค์ดํฐ๋ธ C ๊ธฐ๋ฐ API๋ฅผ ์ฌ์ฉํ์ฌ ๋์ฒดํ ์ ์์ต๋๋ค.
@simonferquel ์ฝ๋๊ฐ ๋ฆฌํฉํ ๋ง๋๊ณ ์ฒดํฌ์ธ๋๋ฉด ๋ ๋ช ํํด์ง ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฌํ ๋ ธ๋ ฅ์ ์ด๋๋ ค๋ฉด ์ผ๋ถ iOS ๋ฐ Android ์ ๋ฌธ๊ฐ๊ฐ ํ์ํ ์ ์์ต๋๋ค.
winui๊ฐ ์ปจํธ๋กค ๋ชจ์์ด์์ ๋ ๋ค์์คํ์ด์ค๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ธ ์ ๊ทผ ๋ฐฉ์์ด์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด์ ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ๋ซํผ์ ๋์ฒดํ๋ฏ๋ก ๋ ์ด์ ์ ๋นํ๋์ง ์๋๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด๊ฒ์ ์ด๋ฏธ WPF/Winforms์ ๋ํด ๋์ผํ ๋ฐฉ์์ผ๋ก ์๋ํ๋ฉฐ, ์ฝ๋์ ๋ค์์คํ์ด์ค๋ฅผ ๋ณ๊ฒฝํ์ง ์๊ณ ์ฝ๋๋ฅผ .net Framework์์ .net ์ฝ์ด๋ก ์ด๋ํ ์ ์์ต๋๋ค. ํ๋ซํผ์ ํ์ฑํ๋๋ฉด ํ์ํ dll์ winui ๋ฒ์ ์ ์๋์ผ๋ก ๋ก๋ํ ์ ์์ด์ผ ํฉ๋๋ค. ์ด๋ฌํ ๋ฐฉ์์ผ๋ก ์์ค ๋ฐ ๋ฐ์ด๋๋ฆฌ ํธํ์ฑ(์ ๋ .net ํต์ฌ ์ฑ์์ .net ํ๋ ์์ํฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ์ฌ์ฉํ์ต๋๋ค)์ ์ ์งํ ์ ์์ต๋๋ค.
์ง๊ธ๊น์ง ๋๊ธ์ ๋จ๊ฒจ์ฃผ์ ๋ชจ๋ ๋ถ๋ค๊ป ๊ฐ์ฌํ๋ค๋ ๋ง์ ์ ํ๊ณ ์ถ์์ต๋๋ค! WinUI ํ์ ๋ชจ๋ ์๋ต๊ณผ ํฌ์ธํธ๋ฅผ ์ฃผ์ ๊น๊ฒ ์ดํด๋ณด๊ณ ์์ต๋๋ค.
๋ํ ์๊ฐ์ ์ ๋ฆฌํ ํ ํน์ ๋ฌธ์ (์: ๊ธฐ์กด UWP ํ๋ ์์ํฌ ๋ฐ ๊ตฌ์ฑ ์์์์ ํธํ์ฑ)์ ๋ํด ์ด์ผ๊ธฐํ๊ธฐ ์ํด ๋ช ๊ฐ์ง ์ง์ค ๋ฌธ์ ๋ฅผ ๋๋ ๊ฒ์
๋๋ค.
๋ ๋ง์ ๊ฒ์ ๋ฃ๊ณ .net ๊ฐ๋ฐ์์๊ฒ ๋ฉ์ง ๋๊ตฌ๋ฅผ ์ ๊ณตํ MS์ ๊ฐ์ฌํ๋ค๋ ๋ง์ ์ ํ๊ณ ์ถ์ต๋๋ค. ํ์ง๋ง ๋น๋ ํ์ ์ดํ UWP Xaml์ ๋ฏธ๋์ ์ค๋งํ์ง ์์ ์ ์์ต๋๋ค.
์ด ๋ธ๋ก๊ทธ์ ์ธํฐ๋ท์ ์๋ ๋ง์ ๊ธฐ์ฌ๋ฅผ ์ฝ์ผ๋ฉด UWP๊ฐ ๋
์ ์ ์ผ๋ก "์ํฐํ๋ผ์ด์ฆ"๊ฐ ๋๊ณ ์๋ค๋ ๋๋์ ๋ฐ๊ฒ ๋๋ฉฐ, ๋ง์ ๊ธฐ์
์ด OS์ ๊ตฌ์ ๋ฐ์ง ์๊ณ ์์
์๊ฐ MacBook Pro๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๋จ์ ๋ฐ๋ผ ์ด๋ ๋
ผ๋์ ์ฌ์ง๊ฐ ์์ต๋๋ค.
์ ๋ ๊ธฐ๋ณธ UWP ๋ฐ Xamarin Forms(Android, iOS)์ ๋ง๋ํ ํฌ์๋ฅผ ํ๊ณ ์์ผ๋ฉฐ ํ๋ซํผ์ ์ฌ๋ํ์ง๋ง MS๊ฐ React์ ๋ํ ๊ธฐ๋ณธ ์ง์์ ๋ฐํํ ํ ๊ณง ์ถ์ํ ์์ ์ ๋๋ค.
๋ฐ์คํฌํฑ์์ UWP ์ฑ์ ํ๋ซํผ์ ๊ตฌ์ ๋ฐ์ง ์๊ฒ ๋ง๋ค์ด์ผ ํ๋ค๋ ๊ฒ์ ์๊ณ ์์ผ๋ฏ๋ก ํ์ฌ uwp ์ฑ์ ์ ธ๋ก ์ฌ์ฉํ๊ณ React๋ฅผ ํผํฉํ์ฌ ์ฌ์ฉํ์ฌ ์ ์ ๋ ๋ง์ ์น ํ๋ฐํธ ์๋ ๊ธฐ์ ์ ํตํฉํ๋ "ํ์ด๋ธ๋ฆฌ๋ ์ฑ"์ ๋ง๋ค ์ ์๊ธฐ๋ฅผ ๋ฐ๋์ต๋๋ค. . ๋ด๊ฐ ์ดํดํ๋ ์ ์๋ "์ธํธ" ๊ธฐ๋ฅ๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ์ด์ Edge ๋ด์์ ๋ ๋์ ์ฐ์ ์์๋ก ์ธํด ์ง์ฐ๋๋ฉฐ, ๊ธฐ๋ณธ UWP์ ์น ๊ธฐ์ ์ ๋ชจ๋ ์คํํ์ฌ ๊ธฐ๋ณธ UWP์ ์น ๊ธฐ์ ๊ฐ์ ๊ฒฝ๊ณ๋ฅผ ์์ ํ ํ๋ฆฌ๊ฒ ํ๋ฏ๋ก ํ์ฌ ์๋ฃจ์ ์ ์ด์์ ์ด์์ต๋๋ค. "์ฐฝ/๊ฐ์ฅ์๋ฆฌ ํญ". ์ด "ํ์ด๋ธ๋ฆฌ๋" ์ ๊ทผ ๋ฐฉ์์ ํตํด ์น ๊ธฐ์ ์ ํ์ฌ ํ๋ซํผ์ ์ฒ์ฒํ ์์ฉํ ์ ์์ ๋ฟ๋ง ์๋๋ผ "๋ธ๋ผ์ฐ์ "์ "๋ค์ดํฐ๋ธ ์ฑ" ํญ๋ ์ ๊ณตํ ์ ์์ต๋๋ค. (์๋น์ ๊ด์ ์์) ์ด๊ฒ์ ๋ํ "๋ค์ดํฐ๋ธ uwp ์ฑ"์ด ๋ฐ์คํฌํ์์ ์ฅ๊ธฐ๊ฐ ์คํจํ ๊ฒฝ์ฐ ํ์ถ๊ตฌ๋ฅผ ์ ๊ณตํฉ๋๋ค.
์์ ์๊ฐ์ ๋ํ ์ด์ ๋ ๊ณง ํฌ๋ก์ค ํ๋ซํผ ๊ธฐ๋ฅ์ด ์์ผ๋ฉด UWP๊ฐ ๋ค์ Silverlight ํฌ์์๊ฐ ๋ ์ ์๊ธฐ ๋๋ฌธ์ ํ์ถ์ฉ ํด์น๋ฅผ ์ ๊ณตํ์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค. MS๋ PWA ์ถ์ธ์์ ์์ง ์๋๋ก ํ๊ธฐ ์ํด ๋ด๊ธฐ๋ฅผ ํค์งํ๊ณ ์์ต๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด Windows์์ React ๊ธฐ๋ณธ ์ง์์ ์ํด ์์ ๋๋ฆฌ๊ณ ์์ต๋๋ค. ๋ฌธ์ ๋ ์ด ์๊ฐ๊น์ง UWP/c#/.net์ ๋ํ "๊ฒฝ๋ก"๊ฐ ๋ธ๋ผ์ฐ์ ๋๋ ๊ต์ฐจ ํ๋ซํผ์ ์๊ณ ์ด๋ฌํ ํ๋ซํผ์ ๋ํ ๋๋ถ๋ถ์ ํฌ์๋ฅผ ์ฌ์ฌ์ฉํ ์ ์๊ธฐ๋ฅผ ํฌ๋งํ๋ฉด์ ๋ด๊ธฐ๋ฅผ ๊ฑธ์๋ค๋ ๊ฒ์ ๋๋ค.
๋ชจ๋ ๊ฐ๋ฐ์๊ฐ Xamarin์ ์ฌ๋ผ๊ณ ์ธ์ณค์ ๋ MS๊ฐ ๊ทธ๋ ๊ฒ ํ๋ ๋ฐ ์์ํ ๊ฑธ๋ ธ๋ ๊ฒ์ ๊ธฐ์ตํฉ๋๋ค. ์น ์ด์ ๋ธ๋ฆฌ์ ์ต์ํ ๋๋ถ๋ถ์ ๊ฐ๋ฐ์๋ ์ต๊ทผ์ ์น ์ด์ ๋ธ๋ฆฌ์์ Windows Server์ "์ ์ ๋ฒ์ "์ ์คํํ ์ ์์๋ค๋ ๊ฒ์ ์๊ณ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ ์ฒด OS๊ฐ ์น ์ด์ ๋ธ๋ฆฌ์์ ์คํ๋ ์ ์๋ค๋ฉด MS๋ ๋ชจ๋ .net ๊ฐ๋ฐ์์๊ฒ ๊ธฐ์กด ํฌ์๋ฅผ ๋ณดํธํ๊ธฐ ์ํด ํ๋ซํผ ๊ฐ ๊ธฐ๋ฅ์ ๋ํ ๋ง์ด๊ทธ๋ ์ด์ ๊ฒฝ๋ก๋ฅผ ์ ๊ณตํด์ผ ํฉ๋๋ค.
Blazor๊ฐ ๊ฑฐ๊ธฐ์ ์๋ค๊ณ ๋งํ ์ ์์ง๋ง ์์งํ ๋งํด์ ์ ํ๋ซํผ์ ๋ ๋ง์ ์๊ฐ์ ํฌ์ํ๊ธฐ ์ ์ React๋ฅผ ๋ฐฐ์ฐ๊ฑฐ๋ ์ฐ๋ฆฌ MS๊ฐ ์ด ๋ชจ๋ ๊ฒ์ ๋ํ ๋ฆฌ์์ค๊ฐ ์ ํ์ ์ด๋ผ๊ณ ๋งํ ์ ์์ต๋๋ค. ํ์คํ Github์ 75์ต ๋ฌ๋ฌ๋ฅผ ์ง๋ถํ๋ฉด ๋ชจ๋ ๊ฒ์ด ์๋์ ์ด ๋ฉ๋๋ค.
๊ธฐ์กด UWP/Win32 ํฌ์์ ๋ํ ํ๋ซํผ ๊ฐ ๊ธฐ๋ฅ์ผ๋ก์ ๋ง์ด๊ทธ๋ ์ด์ ์คํจ๋ก ์ธํ ํํ ์์์ MS๊ฐ ์ดํดํ๋ ๊ฒ์ด ์ค์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ํ๋ซํผ ๊ฐ ๊ธฐ๋ฅ์ .NET 5์ ๋์์ด์ฌ์ผ ํ์ง๋ง ๊ทธ๋ ์ง ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ ํ๋ซํผ์ ๊ฑด๋๋ ์๊ธฐ ๋จ๊ณ๊ฐ MS์์ ์ ์๋ํ๋์ง ํ์ ํ ์ ์์ผ๋ฉฐ ์ ๋ ํญ์ xaml/.net/c#์ ์ด๋ ฌํ ํฌ์ด์์ต๋๋ค.
์ด๋ค ํ ํ๋ฆฟ์ด ๊ฐ์ฅ ํฅ๋ฏธ๋ก์ฐ์ ๊ฐ์?
ํ๋ก์ ํธ ํ ํ๋ฆฟ์ด๋ ํญ๋ชฉ ํ ํ๋ฆฟ๋ ์๋ฏธํฉ๋๊น?
Visual Studio ๋๋ ๋ค๋ฅธ ๋๊ตฌ๊ฐ ์๋์ผ๋ก ๋ค์์คํ์ด์ค๋ฅผ ์ ๋ฐ์ดํธํ๋ฉด ๋์์ด ๋ ๊น์?
์ด๊ฒ์ ๊ฒ์ ๋ฐ ๊ต์ฒด(๊ฐ์น๊ฐ ๋ฎ์) ๋๋ ์ ๋ฒ์ ์ ๋ํ ์ ๋ฐ์ดํธ ์ข ์์ฑ์ ํตํฉ(๋ ๊ฐ์น๊ฐ ์์ง๋ง ์ด๋ป๊ฒ ์ ์ ์๋์ง ํ์คํ์ง ์์)
Re: ์๋ก์ด ๊ธฐ๋ฅ์ ๋ํ ์ด์ ๋ฒ์ ๊ณผ์ ํธํ์ฑ
Creators Update(15063)์ ์ญํธํ๋๋ ๊ฒ์ ๊ณ ์ ๋ ๊ธฐ์ค์ ์ด ๋ฉ๋๊น? ์๋๋ฉด ์์ผ๋ก์ ๊ณํ์ ํ์ฌ ๋ฒ์ ๊ณผ ๊ทธ ์ด์ ๋ฒ์ ์ X๊ฐ๋ฅผ ์ง์ํ๋ ๊ฒ์ ๋๊น?
๊ณต๊ฐ์ ์ผ๋ก ๊ณต์ ํ๊ณ ์ถ์ ํ์ฅ ๊ธฐ๋ฅ์ด๋ ์์ฒด ์ปจํธ๋กค ๋๋ ๊ธฐ๋ฅ์ ๋ง๋๋ ์ฌ๋์๊ฒ ์ด๊ฒ์ด ์๋ฏธํ๋ ๋ฐ๋ ๋ฌด์์ ๋๊น? ํด๋น ์์ค์ ํ์ ํธํ์ฑ๋ ์ง์ํด์ผ ํฉ๋๊น? ์ฌ์ง์ด ์๋์ฐ 8.1๊น์ง?
Re: ๋ค์์คํ์ด์ค ๋ง์ด๊ทธ๋ ์ด์
๊ธฐ์กด UWP๋ฅผ ๋จ๊ณ์ ์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ ์ ์์ต๋๊น(ํ์ด์ง๋ฅผ ์๊ฐํ๊ณ ์์ต๋๋ค). ์๋๋ฉด ์ ์ฒด ์ฑ์ ํ ๋ฒ์ ์ ๋ฐ์ดํธํด์ผ ํฉ๋๊น? ํ ๋ฒ์ ์ ์ฒด ์ฑ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ฑํ ์๋๊ฐ ๋๋ ค์ง๋๋ค.
WPF ์ฑ ๋ง์ด๊ทธ๋ ์ด์ ์ ์ด๋ป์ต๋๊น? - ๋ง์ด๊ทธ๋ ์ด์ ์ ๋ต์ WinUI 2.x ๋๋ 3.x๋ฅผ ์ฌ์ฉํ ์ ์๋ XAML ์์ผ๋๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋๊น? ๊ฐ์ ์ฑ์์ ๋ ๋ค ์ฌ์ฉํ ์ ์๋์?
์, ์ด ๋ฌธ์ ๋ฅผ ๋ ์ง์ค๋ ์ฌ๋ฌ ๋ฌธ์ ๋ก ๋๋๋ฉด ์์ด๋์ด๋ฅผ ๋ ๋ช ํํ๊ฒ ํฌ์ฐฉํ๊ณ ์ ์ ์ ํผํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
๋ฌด์์ ๋งํ๋์ง ๋ช ํํ์ง ์์ผ๋ฏ๋ก UWP์ ๋ชจ๋ ์ธ์คํด์ค๋ฅผ ์ ์ ํ ์ด๋ฆ์ผ๋ก ๋ฐ๊พธ์ญ์์ค.
@mrlacey :
ํ๋ก์ ํธ ํ ํ๋ฆฟ์ด๋ ํญ๋ชฉ ํ ํ๋ฆฟ๋ ์๋ฏธํฉ๋๊น?
์์ดํ ์ด๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ ํ๋ฆฟ๋ ์ฌ๋ฏธ์์ต๋๋ค! Windows Template Studio ์ ๊ฐ์ด ์๊ฐ์ด ์ง๋๋ฉด์ ์ถ๊ฐํ๋ ๊ฒ์ ๊ณ ๋ คํ ์ ์๋ ์ถ๊ฐ ์์ฉ๊ตฌ ๋ฐ ์์ ์ฝ๋๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ ๋ํ ๋ต๋ณ์๋ ์ง๊ธ๊น์ง์ ์ข์ ์ ์ด ๋ช ๊ฐ์ง ์์ต๋๋ค.
์ด๊ฒ์ ๊ฒ์ ๋ฐ ๊ต์ฒด(๊ฐ์น๊ฐ ๋ฎ์) ๋๋ ์ ๋ฒ์ ์ ๋ํ ์ ๋ฐ์ดํธ ์ข ์์ฑ์ ํตํฉ(๋ ๊ฐ์น๊ฐ ์์ง๋ง ์ด๋ป๊ฒ ์ ์ ์๋์ง ํ์คํ์ง ์์)
์ข์ ์ง๋ฌธ์ ๋๋ค. ์ด๋ค ์ข ๋ฅ์ ์ข ์์ฑ ์ ๋ฐ์ดํธ๊ฐ ๋ ๊ฐ์น๊ฐ ์์ต๋๊น? ์๋ฅผ ๋ค์ด ํธํ๋๋ ์๋ก์ด NuGet ํจํค์ง ๋ฒ์ ์ ์ฐพ๊ณ ๊ณ์ญ๋๊น?
Creators Update(15063)์ ์ญํธํ๋๋ ๊ฒ์ ๊ณ ์ ๋ ๊ธฐ์ค์ ์ด ๋ฉ๋๊น? ์๋๋ฉด ์์ผ๋ก์ ๊ณํ์ ํ์ฌ ๋ฒ์ ๊ณผ ๊ทธ ์ด์ ๋ฒ์ ์ X๊ฐ๋ฅผ ์ง์ํ๋ ๊ฒ์ ๋๊น?
์ฌ์ฉ์ ๋ฐ๋ผ ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์ง์ ๋ฒ์ ๋ฒ์๊ฐ ๋ณ๊ฒฝ๋ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค. ํน์ ์์ ๋ฒ์ ์ ๊ตญํ๋์ง ์๊ณ ๊ณ์ํด์ ์ฌ์ฉ ๋ฐ์ดํฐ๋ฅผ ์ดํด๋ณด๊ณ ๊ฐ์ฅ ํ์ฑํ๋ Windows 10 ์ถ์ ๋ฒ์ ์ ์ง์ํ ๊ฒ์ ๋๋ค.
๊ณต๊ฐ์ ์ผ๋ก ๊ณต์ ํ๊ณ ์ถ์ ํ์ฅ ๊ธฐ๋ฅ์ด๋ ์์ฒด ์ปจํธ๋กค ๋๋ ๊ธฐ๋ฅ์ ๋ง๋๋ ์ฌ๋์๊ฒ ์ด๊ฒ์ด ์๋ฏธํ๋ ๋ฐ๋ ๋ฌด์์ ๋๊น? ํด๋น ์์ค์ ํ์ ํธํ์ฑ๋ ์ง์ํด์ผ ํฉ๋๊น? ์ฌ์ง์ด ์๋์ฐ 8.1๊น์ง?
์ฐ๋ฆฌ๋ ํ์ฌ ์ฌ์ฉ์ ์ง์ ์ปจํธ๋กค์ ๋ํ ์ถ๊ฐ ์๊ตฌ ์ฌํญ์ด๋ "์ธ์ฆ"์ ๋ถ๊ณผํ ๊ณํ์ด ์์ต๋๋ค. ๋ฒ์ ๊ด๋ฆฌ๋ ๊ทํ์๊ฒ ๋ฌ๋ ค ์์ต๋๋ค. 2019๋ 5์ ์ ๋ฐ์ดํธ, WinUI 3.0 ๋ฐ WinUI์ ํฅํ ๋ฒ์ ์ ๋ํ ์ ๋ฐ์ ์ธ ๋ฒ์ ๊ด๋ฆฌ ์ด์ผ๊ธฐ๋ ๋ถ๋ช ํ ์ฐ๋ฆฌ๊ฐ ๊ณง ๋ ๊น์ด ๋ค์ด๊ฐ๊ณ ์ถ์ ์ฃผ์ ์ ๋๋ค.
๊ธฐ์กด UWP๋ฅผ ๋จ๊ณ์ ์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ ์ ์์ต๋๊น(ํ์ด์ง๋ฅผ ์๊ฐํ๊ณ ์์ต๋๋ค). ์๋๋ฉด ์ ์ฒด ์ฑ์ ํ ๋ฒ์ ์ ๋ฐ์ดํธํด์ผ ํฉ๋๊น? ํ ๋ฒ์ ์ ์ฒด ์ฑ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ฑํ ์๋๊ฐ ๋๋ ค์ง๋๋ค.
ํ๋ฅญํ ์ง๋ฌธ์ ๋๋ค. ์ง์ ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ด๊ฒ์ ๋ํ ์ฐ๋ฆฌ๊ฐ ๊ณง ๋ ๊น์ด ๋ค์ด๊ฐ๊ณ ์ ํ๋ ์ฃผ์ ์ด๊ธฐ๋ ํฉ๋๋ค.
๋ฌด์์ ๋งํ๋์ง ๋ช ํํ์ง ์์ผ๋ฏ๋ก UWP์ ๋ชจ๋ ์ธ์คํด์ค๋ฅผ ์ ์ ํ ์ด๋ฆ์ผ๋ก ๋ฐ๊พธ์ญ์์ค.
@riverar : ๋ช ํํ์ง ์์ ํน์ ์ฌ์ฉ๋ฒ์ด๋ ์น์ ์ด ์์ต๋๊น?
๋ค๋ฅธ Xaml ๊ธฐ๋ฐ ํ๋ซํผ(์: WPF)๊ณผ ๊ตฌ๋ณํ๊ธฐ ์ํด Windows 10 ๋ฐ UWP SDK์ ์ผ๋ถ๋ก ์ ๊ณต๋๋ Xaml ํ๋ซํผ์ ๋ํ๋ด๊ธฐ ์ํด " UWP Xaml "์ด๋ผ๋ ์ฉ์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๋ํ Win32 ์ฑ ๋ชจ๋ธ๊ณผ ๊ตฌ๋ณ๋๋ " UWP ์ฑ ๋ชจ๋ธ "(ํจํค์ง ๋ฐ ์ค์น, ๋ฐ์ดํฐ ๋ฐ ์ํ ๊ด๋ฆฌ, ๋ฐํ์ ์๋ช ์ฃผ๊ธฐ ๋ฑ)์ ์ฐธ์กฐํฉ๋๋ค.
Windows ๋ฐ์คํฌํฑ์์๋ ์ฌ์ฉ์๋ ์น ๊ฒ์์ ๋ง์ ์๊ฐ์ ํ ์ ํฉ๋๋ค.
() UWP vNext XAML + .NET (C#/F#/VB.NET)์ ์ฌ์ฉํ์ฌ ๊ด์ฐฎ์ ์น ์ฑ์ ๊ฐ๋ฐํ ๋ฐฉ๋ฒ์ด ํ์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ ๋ ์๋ ๋์ WPF + ClickOnce๋ก ๊ฐ๋ฐํ ๋ค์ UWP๋ฅผ ์ดํด๋ณด๊ธฐ ์์ํ์ต๋๋ค. ๋๋ UWP๋ฅผ ์ข์ํ์ง๋ง (๋๋ ๋ค์ ๋ฒ์ ) ๋ ๋ฆฝ ์คํํ EXE, ๋ ๋์ ์ฐฝ API(์ํ๋ ๊ฒฝ์ฐ ์ฌ์ฉ์ ์ง์ Winamp ์ฐฝ ์คํ์ผ ์ฑ์ ๋ง๋ค ์ ์์), ๋ ๋ง์ ์ธ์ API, C dll๊ณผ์ ์ฌ์ด ์ํธ ์ด์ฉ์ฑ์ ์คํํ ์ ์์ด์ผ ํฉ๋๋ค. , OCX, ๊ตฌ์ฑ ์์์ ํ์ ์งํฉ์ ์น์์ ์คํ๋์ด์ผ ํฉ๋๋ค.
UNO๋ฅผ ๋ณด์์ ๋ ๋๋ ๊ตณ๊ฒ ๋ง์์ ๋จน์์ต๋๋ค. Microsoft๋ ์ด ํ์ฌ๋ฅผ ์ธ์ํ๊ณ ์ด ๊ฐ๋ฐ์๋ค์ UWP ๋ฐ Xamarin ํ๊ณผ ํจ๊ป ํ ์ ์์ต๋๋ค. ๋ค์ ๋ฒ์ UWP๊ฐ ์น, Windows, ๋ชจ๋ฐ์ผ ๋ฐ IoT์์ ์คํ๋๋ Azure ์ ํ์ด ๋๋ค๋ฉด ๊ธฐ์ ๊ฒ์ ๋๋ค. IMO๋ Azure Portal๋ UWP vNext๋ก ์์ฑํ ์ ์์ต๋๋ค.
๋ง์ดํฌ๋ก์ํํธ๋ ํ ์ ์์ต๋๋ค. Silverlight๋ก, WPF๋ก, UWP๋ก, Xamarin์ผ๋ก ํ์ต๋๋ค. ์ด์ ๊ถ๊ทน์ ์ธ GUI XAML ํ๋ ์์ํฌ๊ฐ ํ์ํ ๋์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ด ์๊ฐ์ ์น์ ์ต์ํ ๊ธฐ๋ฅ์ ํ์ ์งํฉ์์ ์ง์๋์ด์ผ ํฉ๋๋ค.
_INotifyDataErrorInfo_
_INotifyDataErrorInfo_์ ๊ฐ์ ํญ๋ชฉ์ ๋ํด ์ ๋ค์์คํ์ด์ค๋ฅผ ๋์ ํ์ง ๋ง์ญ์์ค. ์ผ๋ฐ์ ์ผ๋ก ํฌ๋ก์ค ํ๋ซํผ์ด๊ณ WinUI์ ๋ํ ์ข ์์ฑ์ด ์์ด์ผ ํ๋ ๋ทฐ ๋ชจ๋ธ์์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์ด์ ๊ฐ์ ๋ค๋ฅธ ํญ๋ชฉ์ด ์๋ ์์น๋ฅผ ์ ์ํด์ผ ํฉ๋๋ค(์: _INotifyPropertyChanged_ ๋๋ _INotifyCollectionChanged)_
์ด ์ฃผ์ ์ ๋ํด. Windows.UI.Xaml.Interop์๋ ์ด๋ฏธ INotifyCollectionChanged ์ธํฐํ์ด์ค๊ฐ ์๊ณ Windows.UI.Xaml.Data์๋ INotifyPropertyChanged๊ฐ ์์ต๋๋ค. ์ด ๋ ๊ฐ์ง๋ Microsoft ๋ค์์คํ์ด์ค๋ก ์ด๋๋ฉ๋๋ค. ์๋ง๋ System.Runtime.WindowsRuntime ์ด์ ๋ธ๋ฆฌ๋ WinUI์์ .Net์ผ๋ก ์ผ๋ถ ๋งคํ์ ์ํํ ์ ์์ต๋๋ค.
์์ง ์ถ๊ฐ๋์ง ์์ ๊ฒฝ์ฐ ์ถ๊ฐํ๊ณ ์ถ์ ์ ์ผํ ๊ฒ์ MSIX/Appx ํจํค์ง ๋ชจ๋ธ์ 100% ์ง์ํ๊ณ Win10์ด Windows์ ์๋ช ๋์ ์ค์น ๋ฐ ์ ๊ฑฐ ์์ ์ ์์ ํ๋ ํ์์ ์ธ ์์ ์ ์ํํ๋ค๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ AppContainer ์๋๋ฐ์ค์์ ์ ํํ ์ฌ์ฉ ๊ฐ๋ฅํ API์ ์ด์ํ ํ์ ์งํฉ ๋๋ฌธ์ "UWP" ์์ฉ ํ๋ก๊ทธ๋จ์ ๋น๋ํ๋ ๋ฐ ํญ์ ์ด๋ ค์์ ๊ฒช์์ต๋๋ค. C++ ๊ฐ๋ฐ์๋ก์ ๊ทธ๊ฒ์ ์ค๋ง์ค๋ฌ์ ๊ณ ๋งค๋ ์ ์ฒด Win32 API ์ธํธ๋ฅผ ํ์ฉํ๊ธฐ ์ํด ๋ ๋ง์ ์๋๋ฐ์ค๋ฅผ ์ฌ๋ ๊ฒ์ ๋ณด๊ณ ์๋ํ์ต๋๋ค.
๋ฐ๋ผ์ WinUI 3.0์ ์ฌ์ฉํ์ฌ Win32 ์คํ์ 100%์ ์ก์ธ์คํ ์ ์๋ ์ฑ์ ๋น๋ํ ์ ์๋ค๋ฉด ์ด๊ฒ์ด ํฉ๊ธ์ด ๋ ๊ฒ์ ๋๋ค! ์ง๊ธ XamlIslands๋ฅผ ์ฌ์ฉํด ๋ณด์๋๋ฐ ํ์์ ์ธ ํ์ถ๊ตฌ์ด์ง๋ง ์ ์๊ฒ๋ ๋ถ์์ ํ๊ณ ๊ฒฐ์น์ ์ ํต๊ณผํ๊ธฐ ์ ์ ์ฝ๊ฐ์ ์์ ์ด ๋จ์์ต๋๋ค.
AppContainer ํ๋ก์ธ์ค ๋ด๋ถ๋ฅผ ์ฑ์ฐ์ง ์๊ณ Win32 ์ฑ์ ๋น๋ํ ์ ์๋ ํ๋ก์ ํธ ํ ํ๋ฆฟ์ ์ป๊ณ UI๋ก ๋ง๋ ๋ชจ๋ ๋ฐ์ ์ฌํญ์ ์ก์ธ์คํ ์ ์๋ค๋ฉด WinUI 3๊ฐ ์ ์๊ฒ ์๋ฒฝํ ๊ฒ์ ๋๋ค.
@eklipse2k8 ํธ์ํ ์๋๋ฐ์ค์์๋ ์ฌ์ฉ์์ ํ์ผ ๋ฐ ์ฅ์น์ ์ก์ธ์คํ๋ ค๋ฉด ์ฌ์ ํ ๊ถํ ์์คํ ์ด ํ์ํฉ๋๋ค. ๋ํ ์ผ์ข ์ ๊ณต์ ํ ์คํธ ๋ฐ ์ฝ๋ ์๋ช ์๊ตฌ ์ฌํญ ์์ด ์ฌ์ฉ์ ์์ญ์ ์ ์งํ๊ณ ๊ด๋ฆฌ์ ๋ฐ ์ปค๋ ์ก์ธ์ค๋ก์ ์์น์ ๋ฐฉ์งํ๋ ๊ท์น์ด ์์ด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
์๋ ํ์ธ์ ๋ง์ดํฌ๋ก์ํํธ,
์ด ๊ฒ์๋ฌผ์ด Font Rendering , ClearType , DirectWrite ๋ฐ Windows UI์ ๋ฏธ๋์ ๋ํ ์ฃผ์ ์ ์ผ๋ง๋ ์ํฅ์
Windows UI์ ๊ธ๊ผด ๋ ๋๋ง์ ๋ํ ์ฌ๋๋ค์ ๋ถ๋ง (๋๋ ๋ง์กฑ)์ ์ธํฐ๋ท์ ๊ฑฐ์ ๋ชจ๋ ๊ณณ ์์ ์ ์ค๋ช ๋์ด ์ข์ํ๋ ์ฌ๋๋ค๋ ์๊ณ ์ ๋์ ์ผ๋ก ์ซ์ดํ๋ ์ฌ๋๋ค๋ ์์ ๊ฒ์ ๋๋ค.
๋๋ ์ด๋ ์ชฝ์ด ๋ค๋ฅธ ์ชฝ๋ณด๋ค ๋์์ง ๋ ผํ๊ธฐ ์ํด ์ฌ๊ธฐ ์๋ ๊ฒ์ด ์๋๋๋ค. ๋ํ ๋ ์ง์คํธ๋ฆฌ ํดํน, '๊ธ๊ผด ํ๋' ๋๋ ๊ธ๊ผด์ ๋ ์ ๋ณด์ด๊ฒ ํ๊ธฐ ์ํด OS ์ค์ ์ ์กฐ์ ํ๋ ๋ฐฉ๋ฒ์ ๋ํด ๋ ผ์ํ๊ธฐ ์ํด ์ฌ๊ธฐ์ ์จ ๊ฒ์ด ์๋๋๋ค. ์ ๋ฅผ ๋ฏฟ์ผ์ธ์. ์ ๊ฐ ๋ค ํ์ต๋๋ค. ์ฌ์ง์ด ์ปค๋ ๋ชจ๋์์ DirectWrite ๊ธฐ๋ฅ์ ํจ์นํ๊ธฐ ์ํด ์ปค๋ ๋ชจ๋ ๋๋ผ์ด๋ฒ๋ฅผ ์์ฑํ๊ธฐ ์ํ ์ฐ๊ตฌ๋ฅผ ํ๊ธฐ๊น์ง ํ์ต๋๋ค.
๋๋ ๊ทผ์ / ๊ทผ์ ๋ผ๋ ๋งค์ฐ ์ผ๋ฐ์ ์ธ ์์ ๊ฒฝ ์งํ์
ํ ๊ฑฐ๋ฆฌ๋ฅผ ๋์ด ๊ต์ ๋ ์ฆ๋ฅผ ์ฐฉ์ฉํด์ผ ํฉ๋๋ค. :์๊ฒฝ: ๋ฐ์คํฌํฑ ์ปดํจํฐ ํ๋ฉด์ด ๊ฑฐ์ ํ ๊ฑฐ๋ฆฌ์ ์๋ค๋ ์ฌ์ค์ ์ฐ๋ฆฌ ๋ชจ๋๊ฐ ์๊ณ ์์ ๊ฒ์ ๋๋ค. ๋ฐ๋ผ์ ๋ฌธ์ .
๊ธ๊ผด์ด ํฝ์ ์ ๋ง์ถฐ์ง ๋ ๋ ์นด๋ก์ด ๋ชจ์๋ฆฌ๋ ์์ผ๊ฐ ์ด์ ์ด ๋ง์ง ์๋๋ค๊ณ ์๊ฐํ๊ฒ
์ค๋ ์๊ฐ ๋์ ์ฝ๋๋ฅผ ์์ฑํ๊ณ ํ ์คํธ๋ฅผ ๋ณด๋ ๋๋ฃ ๊ฐ๋ฐ์๋ก์ ๋ต๋ตํ๊ณ ๊ฐ์ด์ด ์ํ๋๋ค. ์ด๊ฒ์ด ๋ด๊ฐ ์ฌ์ ํ Windows 10์ด ์๋ 7์ ์คํํ๋ ์ฃผ๋ ์ด์ ์ ๋๋ค. ๊ฑฐ์ ๋ชจ๋ Windows 10 ๊ธฐ๋ณธ Metro UI๋ ์ด๋์์๋ ๊ธ๊ผด ๋ค๋ฌ๊ธฐ๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
์ด ๊ธ๊ผด ๋ค๋ฌ๊ธฐ ๋ฌธ์ ๋ฅผ ์ค๋ช
ํ๊ธฐ ์ํด Windows 7 ์ services.msc
MMC ์ค๋
์ธ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์ด์ ์ด ๋ง์ง ์์ ํ๋ฆฟํ ํ ์คํธ๊ฐ ๋ณด์ ๋๊น? ์ฌ๊ธฐ. ์ข ๋ ํ๋ํด ๋ณผ๊น์...
๋ง์์ฌ, ์๋ ์ ์ฒด๋ ์์ ์ญ์๋์ผ๋ก ํ ์คํธ๋ฅผ ๋ณด๊ณ ์๋ ๊ฒ ๊ฐ์ ๋๋์ด ๋ญ๋๋ค.
์ด ํน์ ๊ฒฝ์ฐ์ ์ด ์ฐฝ์ ์ปจํธ๋กค ๊ณ์ธต์ ํ๊ณ ๋ค๋ฉด MMC ์ค๋ ์ธ์ด "์ค๋ช ์ ๋ณด๋ ค๋ฉด ํญ๋ชฉ ์ ํ" ํจ๋์์ ํผ์ง ํ ์คํธ๋ฅผ ๋ ๋๋งํ๋ Internet Explorer DHTML/ActiveX ์ปจํธ๋กค์ ํธ์คํ ํ๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. ๋ ์นด๋ก์ด(ํฝ์ ์ ๋ง์ถ๊ธฐ), "๋์๋ง" ๋ฉ๋ด ๋ฐ ์๋น์ค ๋ชฉ๋ก์ ์ผ๋ฐ USER32 ๋ฐ GDI32 ํ๋ฆฌ๋ฏธํฐ๋ธ๋ก ๋ ๋๋ง๋ฉ๋๋ค.
์ด ์์ ์๋ Windows์ ๊ธ๊ผด ๋ ๋๋ง๊ณผ ๊ด๋ จ๋ ๊ฐ์ฅ ํฐ ๋ฌธ์ ์ค ํ๋๋ฅผ ๊ฐ์กฐํฉ๋๋ค. IE8์ ClearType ๋ฐ ๊ธ๊ผด ๋ค๋ฌ๊ธฐ๋ฅผ ๋นํ์ฑํํ๋ ์ ์ญ ์ด์ ์ฒด์ ์ค์ ์ ์กด์คํฉ๋๋ค. ๊ทธ๋ฌ๋ IE9 ์ด์์ ์ค์นํ๋ฉด IE9+๋ ๊ธ๊ผด ๋ค๋ฌ๊ธฐ๋ฅผ ๋นํ์ฑํํ๋ ค๋ ๋ชจ๋ ๋ ธ๋ ฅ์ ๊ธฐ๊บผ์ด ๋ฌด์ํฉ๋๋ค. IE9+๋ ์๊ดํ์ง ์์ผ๋ฉฐ ๋ชจ๋ ์ฌ์ฉ์๊ฐ ๊ธ๊ผด์ด ๋ถ๋๋ฌ์ด ํ ์คํธ๋ก ์น ์ฌ์ดํธ(๋ฐ ActiveX ์ปจํธ๋กค)์์ ํ ์คํธ๋ฅผ ๋ณด๋๋ก ๊ฐ์ ํฉ๋๋ค.
์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ Windows 8 ๋ฐ Windows 10์ ํ์, Metro Apps, WPF ๋ฐ UWP๊ฐ ๋ชจ๋ IE9+์ ๋์ผํ ์ ๊ทผ ๋ฐฉ์์ ์ทจํ๊ธฐ ๋๋ฌธ์ ๋์ ๊ฐ์ ์ฌ์ฉ์์ ๊ฒฝ์ฐ ๋ฌธ์ ๊ฐ ๋ ์ ํ๋ฉ๋๋ค. ๋ด๋ถ์ ์๋ ์ด๋ฌํ ๋ชจ๋ UI ๊ธฐ์ ์ ์์คํ ์์ ์ค์ํด์ผ ํ๋ ์ ์ญ ์ด์ ์ฒด์ ์ ์ฒด ์ค์ ํฉ๋๋ค. ์ด์ ์ฒด์ ์ ์ฒด ์์ค์์ ClearType ๋ฐ ๊ธ๊ผด ๋ค๋ฌ๊ธฐ๋ฅผ ๋นํ์ฑํํ๋ฉด ClearType ๋ฐ DirectWrite API(๊ฒฐ๊ณผ์ ์ผ๋ก Metro, WPF ๋ฐ UWP ์ฑ)๊ฐ ๊ธ๊ผด ๋ค๋ฌ๊ธฐ๋ก ๊ทธ๋ฆฌ์ง ์์ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค.
์ด ๋ฌธ์ ๊ฐ ๋ ํผ์๋ง์ด ์๋๋ผ๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค.
์ผ๋ง ์ Google Chrome ์ v31 ๋ฆด๋ฆฌ์ค ์์ ๋์ผํ ์์ ์ ์ํํ์ผ๋ฉฐ IE9+ ์ ๊ทผ ๋ฐฉ์์ ๋ฐ๋ฅด๊ณ ์ ์ฒด ์์คํ ์ ์ฒด ์ค์ ์ ๋ฌด์ํ๊ณ ๋ชจ๋ ๊ธ๊ผด ๋ ๋๋ง์ DirectWrite ๋ก ์ ํํ์ต๋๋ค. ์ด ๋ณํ๋ ์ธํฐ๋ท์ ๋ถ๋ ธ์ผ ํ์ต๋๋ค. Chromium ๋ฌธ์ 319429๋ฅผ ์ฐธ์กฐํ์ญ์์ค. ๋ง์ง๋ง์ผ๋ก, ์ด๋ฅผ ๊ฐ๊ธฐ๊ฐ๊ธฐ ์ฐข์ ํ Google์ ๊ทผ์ ์๊ฐ ์ฅ์ ๊ฐ ์๋ ์ฌ์ฉ์๋ฅผ ์ํด Chrome 37 ์ ๋ฌธ์ ๋ฅผ ์์ ํ๊ณ ์ด์ ๊ธ๊ผด ๋ค๋ฌ๊ธฐ๋ฅผ ๋นํ์ฑํํ๋ ์ด์ ์ฒด์ ์ ์ฒด ์ค์ ์ ์กด์คํฉ๋๋ค.
์์ฅ์ ํ๊ณผ ์์ฅ์ ํ ๋๋ถ์ Microsoft ๋ ๋ธ๋ผ์ฐ์ ์ ์์์ ์ง๊ณ ํ์ฌ Chromium ๋ ๋๋ง ์์ง์ ์ฑํํ๊ณ ์์ง๋ง Edge ํ์ด ๋นํ์ฑํ๋ ๊ธ๊ผด ๋ค๋ฌ๊ธฐ ์ค์ ์ ์กด์คํ ๊ฒ์ด๋ผ๊ณ ์จ์ ์ฃฝ์ด๊ณ ์์ต๋๋ค.
์ ๋ Microsoft๊ฐ ์๋ ฅ ๋ฌธ์ ๊ฐ ์๋ ์ฌ๋๋ค์ ์ํด ์ด์ ์ฒด์ ์ ๋ชจ๋ ์ฑ, ๋ชจ๋ UI ์คํ์ ๊ฑธ์ณ ์กด์ค ๋์ด์ผ ํ๋ ํ๋์ ์ ์ญ ์ค์
๊ทธ๋ฆฌ๊ณ ์น์ํ ์๋ฆผ์ผ๋ก ์ด๊ฒ์ ์๊ฐ์ ๊ธฐ๋ณธ ์ค์ ์ด ์๋๋ผ ์ผ๋ฐ์ ์ผ๋ก Windows UI์ ๋ํ ์ ๊ทผ์ฑ ๋ฌธ์ ์ ๋๋ค.
์ ์ธ๊ณ์ ์ธ ๊ทผ์ ์ ๋ณ๋ฅ ์ ๊ธฐ์ค์ผ๋ก ํ์ฌ ์ธ๊ณ ์ธ๊ตฌ์ 22% ์ด์, ์ฆ 15์ต ๋ช ์ด ๊ทผ์๋ผ๊ณ ์ถ์ ํ ์ ์์ต๋๋ค. https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3930268/
๊ฐ์ฌ ํด์,
๋ธ๋ผ์ด์ธ
:walking_man: :walking_woman: ์ค์ข ์ - LA ์ํน
์ฆ, ์ ์ฒด Xaml ํ๋ ์์ํฌ๊ฐ GitHub์์ ๊ฐ๋ฐ๋๊ณ NuGet ํจํค์ง๋ก ๋์ญ ์ธ ๋ฐฐ์ก๋ฉ๋๋ค.
NuGet์ ํ๋ฅญํ์ง๋ง vcpkg (๋ฐ CMake )๋ฅผ ์ง์ํ๋ ๊ฒ๋ ๊ฐ์ฌํ ๊ฒ์ ๋๋ค(๊ธฐ์กด์ ๋๊ท๋ชจ ํฌ๋ก์ค ํ๋ซํผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋ ๊ฒฝ์ฐ).
์ด๋ค ํ ํ๋ฆฟ์ด ๊ฐ์ฅ ํฅ๋ฏธ๋ก์ฐ์ ๊ฐ์?
์ฐ์ ์์:
Win32 + Xaml ๋ฐ์คํฌํฑ + WinUI
Win32 + Xaml ์ ๋ + WinUI
UWP + WinUI
๋ฐ์คํฌํฑ ์ฑ ํ๋ํ๋ฅผ ์ํ Xaml Islands๋ฅผ ์๊ณ ๊ณ์ จ์ต๋๊น?Windows 10์์ ํ์ฅ๋ ์ด์ ๋ฒ์ ๊ณผ์ ํธํ์ฑ์ด Xaml Islands๋ฅผ ๋ ์ ์ฉํ๊ฒ ๋ง๋ค๊น์?
์, Xaml Islands๋ ํฅ๋ฏธ๋กญ์ง๋ง ๊ธฐ์ ๊ณ ๊ฐ์ด ์๋ ์๋น์๋ฅผ ๋์์ผ๋ก ํ๊ธฐ ๋๋ฌธ์ ํ์ฅ๋ ์ด์ ๋ฒ์ ๊ณผ์ ํธํ์ฑ์ ๋ฌธ์ ๊ฐ ๋์ง ์์ต๋๋ค. ๋๋ถ๋ถ์ ๊ณ ๊ฐ์ OS๋ฅผ ์ ๋ฐ์ดํธํ๋ ๋ฐ ์๋นํ ๋ง์กฑํฉ๋๋ค(๊ทธ๋ฆฌ๊ณ ์ฃผ์ด์ง ์๊ฐ ๋ฒ์์์๋ ์๋ก์ด WinUI๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ณ๊ฒฝ ์ฌํญ์ ๊ตฌํํฉ๋๋ค. Xaml, 1903๋ ์ผ๋ก ์ ๊ทธ๋ฉด ์๋ง๋ ์ด๋ฏธ 1๋ ์ด ์ง๋ฌ์์ ์๋ฏธํฉ๋๋ค).
WinUI์ Xaml, ๊ตฌ์ฑ ๋ฐ ์ ๋ ฅ API์ ๋ํ ๋ฃจํธ ๋ค์์คํ์ด์ค๋ Windows UWP SDK ๋ฃจํธ ๋ค์์คํ์ด์ค์ ๋ค๋ฆ ๋๋ค.
Visual Studio ๋๋ ๋ค๋ฅธ ๋๊ตฌ๊ฐ ์๋์ผ๋ก ๋ค์์คํ์ด์ค๋ฅผ ์ ๋ฐ์ดํธํ๋ฉด ๋์์ด ๋ ๊น์?
UWP ์ฑ์ด ์๊ธฐ ๋๋ฌธ์(ํ์ฌ ์ง์ ํ๋งค์๋ WPF + Desktop Bridge๋ฅผ ์ฌ์ฉ) ์ด๊ฒ์ ๋์๊ฒ ์ํฅ์ ์ฃผ์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ค์์คํ์ด์ค๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ์ ์ผํ์ฑ์ด๋ฉฐ ๊ฐ์ฅ ํฐ ์ฝ๋ ๊ธฐ๋ฐ์์๋ Windows::UI::Xaml
๋ํ ์ ์ญ ์ฐพ๊ธฐ ๋ฐ ๋ฐ๊พธ๊ธฐ๋ ๊ทธ๋ฆฌ ์ด๋ ต์ง ์์ต๋๋ค(์ฐ๋ฆฌ๋ ๋ชจ๋ ๋ฒ์ ์ ์ด๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค..?).
WinUI 3.0์ ์ถ์ํ๋ ๊ฐ์ฅ ๋น ๋ฅธ ๊ฒฝ๋ก๋ ํผํฉ์ ์ง์ํ์ง ์๋ ๊ฒ์ ๋๋ค.
๊ทธ๊ฑด ๊ด์ฐฎ์ต๋๋ค. ๊ทธ๊ฒ๋ค์ ๋ณ๋์ ํธํ๋์ง ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์ทจ๊ธ๋์ด์ผ ํฉ๋๋ค. UWP Xaml ๋๋ WinUI Xaml์ ๋์์ผ๋ก ํฉ๋๋ค. ์์์ ์ธ๊ธํ๋ฏ์ด ์ผํ์ฑ ๋ณํ์ ๊ทธ๋ ๊ฒ ์ด๋ ต์ง ์์์ผ ํฉ๋๋ค.
๊ทธ๋ฌ๋ ๊ฐ์ฅ ํฐ ์ฐ๋ ค ์ฌํญ ์ค ํ๋๋ ํนํ UWP Xaml ์ปจํธ๋กค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์์ฑํ๊ฑฐ๋ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๊ธฐ์กด UWP ์ฑ ๋ฐ ๊ตฌ์ฑ ์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํด ์์ฑํ ์ ์๋ ํธํ์ฑ ๋ฌธ์ ๋ฐ ์์ ์ ๋๋ค.
์๋ฅผ ๋ค์ด ๊ธฐ์กด ๋ฒ์ ์ Windows Community Toolkit ์ WinUI 3.0 ์ฑ์์ ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก Toolkit๊ณผ ์ด๋ฅผ ์ฌ์ฉํ๋ ๋ชจ๋ ์ฑ์ WinUI 3.0์ ์ฌ์ฉํ๊ธฐ ์ ์ ์ ๋ฐ์ดํธํด์ผ ํฉ๋๋ค.
๋ง์ดํฌ๋ก์ํํธ๋ ๊ธฐ์ ์ ์ ํํ๊ณ ๊ณ ์ํด์ผ ํฉ๋๋ค. ์๋ ๋์ ์ฐ๋ฆฌ๋ ์ต์ ์ ์ต๊ณ ์ ๋ฐ์คํฌํฑ UI ํ๋ ์์ํฌ(Win32, ATL, WTL, MFC, WinForms, WPF, UWP Xaml ๋ฐ ํ์ฌ WinUI Xaml)๋ฅผ ์ฝ์ํด ์์ต๋๋ค. ์ ํ์ ํ๋ฅญํ์ง๋ง ๊ธฐ๋ฅ ๋ฐ ๊ฐ๋ฐ์ ์ง์์ ๋จํธํ๋ก ์ด์ด์ง๋๋ค. ๊ธฐ์ ์ ๋ฐ๋ผ 7๊ฐ์ ๋ค๋ฅธ ๊ธฐ๋ฅ๊ณผ ๋น๊ตํ์ฌ Windows์ ๊ธฐ๋ฅ ๊ตฌํ์ ๋ํ ํ๋์ ์ธ์ /ํ๋์ ์น ํ์ด์ง/ํ๋์ ์คํ ์ค๋ฒํ๋ก ๋ต๋ณ์ ๊ฐ๋ ๊ฒ์ด ํจ์ฌ ์ฝ์ต๋๋ค. WinUI Xaml์ด ๋ฏธ๋์ธ ๊ฒฝ์ฐ ์ปค๋ฎค๋ํฐ ๋๊ตฌ ํคํธ๋ฅผ ์ ๋ฐ์ดํธํ์ฌ ์ด๋ฅผ ํ์ฉํด์ผ ํฉ๋๋ค.
๊ธฐ์กด UWP Xaml ๊ตฌ์ฑ ์์์ WinUI 3.0 ์ฑ ๊ฐ์ ์์ ํ ํธํ์ฑ์ด ์ผ๋ง๋ ์ค์ํฉ๋๊น?
๊ธฐ๋ฅ์ด ์๊ธฐ ๋๋ฌธ์(Win32/WPF์ ๋น๊ตํ์ฌ) UWP Xaml๋ก ๋ฌด์์ด๋ ํ๋ ๊ฒ์ ๋ฏธ๋ฃจ๊ณ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ ๋ ๊ทธ๋ฐ ๋ฉด์์ ํผ์๊ฐ ์๋๋ผ๊ณ ๊ฐ์ ํฉ๋๋ค. ๋ฐ๋ผ์ ์์ ํ ํธํ์ฑ์ ๋ฌธ์ ๊ฐ ๋์ง ์์ต๋๋ค.
์ฑ ์ฝ๋์ ํจ๊ป ์ฝ๊ฒ ๋ค์ ์ปดํ์ผ ๋ฐ ์ ๋ฐ์ดํธํ ์ ์๋ UWP Xaml ์ ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋๋ WinRT ๊ตฌ์ฑ ์์๋ฅผ ๋ง๋ค๊ฑฐ๋ ์ฌ์ฉํฉ๋๊น?
์๋์.
WinUI 3์์ UWP Xaml ๊ตฌ์ฑ ์์๋ฅผ ์ฌ์ฉํ๋ ๋ฐ ์ ํธํ๋ ์๋ฃจ์ ์ ๋ฌด์์ ๋๊น?
ํด๋น ์์
- ์์ ๋ก๋๋งต ์ ์์ฝ๋ ์ ์ฒด 3.0 ๊ณํ์ ๋ํด ์ด๋ป๊ฒ ์๊ฐํ์ญ๋๊น? ์ ๊ท ๋ฐ ๊ธฐ์กด Windows ์ฑ์ WinUI๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๊น?
๋ก๋๋งต์๋ Xaml Desktop
์ ๋ํ ์ธ๊ธ์ด ์์ต๋๋ค. ์ด๊ฒ์ WinUI์ ์๊ด์ ํด๋นํฉ๋๊น?
//Build/์ ์ฌ๋๋ค์๊ฒ ์ด์ ์ ์ธ๊ธํ์ง๋ง ์ด์ ์ UWP Xaml์ ์ฑํํ์ง ์์ ์ด์ ๋ ๊ธฐ์กด C++ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ง๋๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์
๋๋ค. ์๋ฅผ ๋ค์ด ์ฌ์ฉ์๊ฐ FileOpenPicker ๋ฅผ ์ฌ์ฉ ํ์ฌ ํ์ผ์ ์ ํํ๋ฉด ๊ฒฐ๊ณผ๊ฐ IStorageFile ๋ก ์ ๋ฌ๋๋ฉฐ ์ด๋ฅผ ๊ธฐ์กด ํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ ๋ฌํ์ฌ ์ด ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค(์: libpng , libjpeg ๋ฑ). ์ด๊ฒ์ด ์ฐ๋ฆฌ๊ฐ WPF๋ฅผ ๊ณ ์ํด์ผ ํ๋ ์ด์ ์
๋๋ค. ๋ฐ๋ผ์ Xaml Desktop
๋๋ Win32 + Xaml Islands
์ด๋ฌํ ์ ํ ์์ด ์ด ์ ์๋ค๋ฉด ์, ์ ์์ฉ ํ๋ก๊ทธ๋จ์ WinUI๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ์ด๋ค ์ข ๋ฅ์ ์ฑ์ WinUI 3.0์ ์ฌ์ฉํ๊ณ ์ถ์ต๋๊น? ์ Win32 ์ฑ์ ๋ง๋ค๊ณ MSIX๋ก ํจํค์ง ํ์๊ฒ ์ต๋๊น? WPF ์ฑ์ ์ ๋ณด๊ธฐ๋ฅผ ์ถ๊ฐํ์๊ฒ ์ต๋๊น? Fluent UI๋ก C++ MFC ์ฑ ํ๋ํ?
WinUI(๋ฐ MSIX๋ก ํจํค์ง)๋ฅผ ์ฌ์ฉํ์ฌ ์ Win32 ์ฑ ๋ง๋ค๊ธฐ.
์ง๋ฌธ์ด ์๋ ๊ฒฝ์ฐ ์๋ ค์ฃผ์ธ์. ๊ธฐ๊บผ์ด ๋ ๋ ผ์ํ๊ฒ ์ต๋๋ค.
์ค์ ๋ก WPF/WinForms์์ Compact Overlay๋ฅผ ํธ์ถํ๋ ๋ฐฉ๋ฒ์ด ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
Android์์ "๋ค๋ฅธ ์ฑ ๊ถํ ์์ ๊ทธ๋ฆฌ๊ธฐ"์ ๊ฐ์ ๊ด๋ฆฌ์ ๊ถํ ์์คํ
๋ง ์์ผ๋ฉด ๋ฉ๋๋ค.
์ด ์ฑ ๋ชจ๋ธ + ํจํค์ง(UWP + AppX, Win32 + MSIX)์ด ํ์ฉํ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค(์๋๋ฐ์ค ๋ด๋ถ์ ์ ์ฒด ์ถ์ํ).
Windows๋ ์ต๊ณ ์ ๋ณด์๊ณผ ํจ๊ป ๊ฐ์ฅ ์ง๋ณด๋๊ณ ๋ฌดํํ ๊ฐ๋ฅ์ฑ์ด ์๋ค๊ณ ๊ฐ์ ํ์ง ์์ต๋๊น?
์๋์ ๋ณด์์ ์ํด ๊ธฐ๋ฅ์ด ์์๋์์ต๋๋ค.
๋ก๋๋งต์ ๋ํ ์๊ฒฌ์ ์ปค๋ฎค๋ํฐ์ ๊ณต๊ฐํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
๊ธฐ์กด UWP Xaml ๊ตฌ์ฑ ์์์ WinUI 3.0 ์ฑ ๊ฐ์ ์์ ํ ํธํ์ฑ์ด ์ผ๋ง๋ ์ค์ํฉ๋๊น?
์์ ์ ๋ฐ๋ฅด๋ฉด ํ์ฌ ์ํฐํ๋ผ์ด์ฆ ํด๋ผ์ด์ธํธ์ ์ฌ์ฉ ์ค์ธ UWP ์ฑ์ด ์๋นํ ๋ง์ผ๋ฉฐ ๋ง์ด๊ทธ๋ ์ด์
๊ฒฝ๋ก๊ฐ ๊ทธ๋ ๊ฒ ์ด๋ ต์ง ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ์ด ์๋ ๊ฒฝ์ฐ ๋ง์ด๊ทธ๋ ์ด์
๊ฒฝ๋ก๊ฐ ์ผ๋ง๋ ํธํ๋๋์ง ์์ฑํ๋ .Net Framework
์์ .Net Core
์ ์ ์ฌํ ๋ง์ด๊ทธ๋ ์ด์
๋๊ตฌ๊ฐ ์์ผ๋ฉด ๋ณ๊ฒฝ์ด ํ์ํ ์ ์๋ ๋ชจ๋ ๊ฒ์ ๋ณด๊ณ ํด์ผ ํฉ๋๋ค( ์: ๋ ์ด์ ์ฌ์ฉ๋์ง ์๊ฑฐ๋ ๋ค๋ฅด๊ฒ ๋์ํ ์ ์๋ API) ๋ฐ ๊ฐ๋ฅํ ๊ฒฝ์ฐ ๋ค์์คํ์ด์ค๋ฅผ ์๋์ผ๋ก ๋ณ๊ฒฝํ๋ ์ต์
. ์ด๋ ๊ฒ ํ๋ฉด UWP์์ WInUI๋ก์ ๋ง์ด๊ทธ๋ ์ด์
๊ฒฝ๋ก๊ฐ ์ํฐํ๋ผ์ด์ฆ ๊ฐ๋ฐ์์๊ฒ ๊ทธ๋ค์ง ๋ถ์์ ํ์ง ์์ ๊ฒ์
๋๋ค.
๋ฐ์คํฌํฑ ์ฑ ํ๋ํ๋ฅผ ์ํ Xaml Islands๋ฅผ ์๊ณ ๊ณ์ จ์ต๋๊น?
Windows 10์์ ํ์ฅ๋ ์ด์ ๋ฒ์ ๊ณผ์ ํธํ์ฑ์ด Xaml Islands๋ฅผ ๋ ์ ์ฉํ๊ฒ ๋ง๋ค๊น์?
์, ํ์ง๋ง ์๋ก ๊ฐ๋ฐ๋ ๋ชจ๋ ๋ฐ์คํฌํฑ ์ฑ์ด API ๋ฐฑ์๋๋ฅผ ํตํด ํต์ ํ๋ UWP๋ฅผ ์ฌ์ฉํ๊ณ ์๊ณ ๋๋ถ๋ถ์ ํด๋ผ์ด์ธํธ๊ฐ ์ด๋ฏธ Windows10์ ์คํํ๊ณ ์๊ธฐ ๋๋ฌธ์ ํฌ๊ฒ ๋ฌธ์ ๊ฐ ๋์ง๋ ์์์ต๋๋ค.
์์ ๋ก๋๋งต์ ์์ฝ๋ ์ ๋ฐ์ ์ธ 3.0 ๊ณํ์ ๋ํด ์ด๋ป๊ฒ ์๊ฐํ์ญ๋๊น? ์ ๊ท ๋ฐ ๊ธฐ์กด Windows ์ฑ์ WinUI๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๊น?
๋ฐ์คํฌํฑ ํ์ ์ด๋ฏธ WinUI 3์ ์์์ ํฅ๋ถํ๊ณ ์์ง๋ง ์์์ ์ธ๊ธํ ๊ฒ์ฒ๋ผ ๊ฒฝ๋ก๊ฐ ์ํํ์ง ์์ ๊ฒฝ์ฐ ๋ชจ๋ UWP ์ฑ์ด WinUI 3์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์ ๋๋ ๊ฒ์ ๋๋ ค์ํฉ๋๋ค.
์ผ๋ฐ XAML์ ๊ฒฝ์ฐ ์ ์ฒด XAML UI ํ๋ ์์ํฌ๊ฐ Windows์์ ๋ถ๋ฆฌ๋์ด ๋ค๋ฅธ ์ฌ๋๋ค์ด ๋ ๋๋ฌ๋ฅผ ๊ต์ฒดํ ์ ์๋๋ก ํ๊ธฐ ๋๋ฌธ์ ๋ผ์ด๋ธ๋ก ๋ถ๋ฆฌ๋ฉ๋๋ค. ์ด๊ฒ์ ๋ค๋ฅธ ํ๋ซํผ์์ WinUI XAML์ ์คํํ ์ ์๋ ๊ฐ๋ฅ์ฑ์ ์ด์ด์ค๋๋ค. ์ด๋ ์ค๋๋ ์ฌ๋๋ค์ด ์คํ์ ์ ํํ ๋ ํฐ ์ ์ ์์๊ฐ ๋ฉ๋๋ค. ํ๋ซํผ๋ณ ๋ค์ดํฐ๋ธ ์ฝ๋๋ฒ ์ด์ค๋ฅผ ๊ตฌ์ฒด์ ์ผ๋ก ๊ฐ๋ฐํ ์ ์๋ ์ธ๋ ฅ.
๋ํ WinUI 3 ์ด์์์๋ XAML ๋ฐฉ์ธ๋ ๊ฐ์ ๋์ด์ผ ํ๋ค๊ณ ์ถ๊ฐํฉ๋๋ค. ์ด์ ์ฑ์ ๋ํ ์ด์ ๋ฒ์ ๊ณผ์ ํธํ์ฑ์ ์ ์งํ๊ธฐ ์ํด ์ฌ์ฉ ์ค์ธ XAML ๋ฒ์ ์ ์ง์ ํ๊ธฐ ์ํด ๋ฒ์ ๋ค์์คํ์ด์ค/Doctype์ ๋์
ํ ์๋ ์์ต๋๋ค. ๊ฐ ๋ง์ด ์์ด์ ์์ฑํ ํ์ ๊ฐ์ XAML ๋ ์ฅํฉ ๋๋ ๋ฉ์ด๋ฆฌ ์ผ๋ถ ์์ฉ๊ตฌ๋ฅผ ๋ง๋๋ ๋ง๋ค ์ INotifyPropertyChanged
ํ๋ ๊ฐ์ธ setter๋ฅผ ๋ฐฑ์
ํ๋ ๋์ ๋จ์ง ๋งํ๋ ๊ฐ๋จํ property ์์ฑ ์ธ์ NotifyPropertyChangedAttribute
ํ๊ณ ํ์ ๋น๋ ๋จ๊ณ๋ ๋ฐํ์ ์ค๋ฒํค๋๋ฅผ ํผํ๊ธฐ ์ํด ๊ตฌํ์ ์ฃผ์
ํ๊ฑฐ๋ ๊ตฌ์ฑ ์์๋ฅผ ๋จ์ํํ๊ธฐ ์ํด ์ฌ์ฉ์ ์ง์ ์ปจํธ๋กค์ ๋ํด DependencyProperties
๋ฅผ ์ฝ์
ํฉ๋๋ค. Razor ํ์ด ๊ฐ์ง๊ณ ์๋ ์ข์ ๋ถ๋ถ์ ๋ํ ๊ฐ์ ์ฌํญ ์ค ์ผ๋ถ๋ฅผ ์ทจํ ์๋ ์์ต๋๋ค.
์ด๋ฌํ ์์ฒญ์ ์คํ ๊ฐ๋ฅํ๊ฑฐ๋ ๋ถ๊ฐ๋ฅํ ์ ์์ง๋ง ์ ๋ XAML์ ์ฌ๋ํ๊ณ ๊ณ์ ๊ฐ์ ๋๊ธฐ๋ฅผ ์ํ๋ฏ๋ก ๊ฐ๋ฐํ ๋ ๋์ ์ฐ๋ฆฌ ํ์ ์ผ๋ถ ๊ณ ์ถฉ(๊ทธ๋ฌ๋ ์ฌ์ ํ ์๋น์ค ๊ฐ๋ฅ)์ ์ธ๊ธํ๊ฒ ์ต๋๋ค.
@mdtauk ๋๋ ํ์ผ ๋ณด์์ ๋ฐ๋ํ์ง ์์ง๋ง ๊ธฐ๋ณธ ์ปค๋์ ์์ ํ ์๋ก์ด API ์ธํธ๋ฅผ ์ฌ์ฉํ๊ณ win32 ํ์ผ API๋ฅผ ํฌ๊ธฐํ๋ ๊ฒ๊ณผ ๋ฐ๋๋ก ๊ถํ์ด ์๋ ๊ณณ์ ์ฐ๋ ๊ฒ์ ๋ฐฉ์งํด์ผ ํฉ๋๋ค. ๋ํ ์ด๊ฒ์ด ์ฃผ์ ์์ ๋ฒ์ด๋ฌ๋ค๋ ๊ฒ์ ์๊ณ ์์ง๋ง StorageFile/StorageFolder API๋ ํ์ผ ๋ณด์์ ๊ณ ๋ คํ์ง ์์ ๋์ฐํ ๋์ฒดํ์ ๋๋ค. ์๋๊ฐ ๋๋ฆฌ๊ณ ํญ์ ๋ฐํ์ ํ์ผ ๋ธ๋ก์ปค๋ฅผ ํตํด ํ๋ก์๋ฉ๋๋ค. ๋ํ ์๋๋ฐ์ค ์ฑ์ด ์ฌ์ฉ์์ ๋ฌธ์ ํด๋์ ์ฐ๊ธฐ ์ํด MS ์น์ธ ํน๋ณ ๊ถํ์ด ํ์ํ๋ค๋ ์ ํ์ด ์์ด์๋ ์ ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด AppContainer ๋ ธ๋ ฅ์ ๋ํ ํ์ผ ์คํ ๋ฆฌ๊ฐ ์ผ๋ง๋ ์๋ง์ธ์ง, ์ฌ์ฉ์์ ์จ๊ฒจ์ง LocalData ํด๋๋ฅผ ์ ์ธํ๊ณ ๋ sqlite DB๋ฅผ ์์ฑํ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํ์ต๋๋ค. ์ฌ์ฉ์๊ฐ ํ์ผ์ ๋ง๋ค๊ณ , ์ ์ฅํ๊ณ , ์ด๊ณ , ๋ค๋ฅธ ์ด๋ฆ์ผ๋ก ์ ์ฅํ๋ ค๋ ๋ฐ์คํฌํฑ ์์คํ ์ ๊ฒฝ์ฐ ์ฌ์ฉ์ ์ฝํ ์ธ ๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉ์์๊ฒ ์ฌ๊ต์กํด์ผ ํ๋ ์ํํธ์จ์ด ๊ฐ๋ฐ์์๊ฒ ๋ถ๋ด์ด ๋์์ต๋๋ค.
๊ด๋ฆฌ์ ์ก์ธ์ค์ ๊ดํ ํ 2018๋ 10์ ๋ฆด๋ฆฌ์ค์๋ "allowsElevation"์ด ์๊ฒฉ์ผ๋ก ์ถ๊ฐ๋์์ผ๋ฉฐ ์ด๋ ์๋ฏธ๊ฐ ์์ต๋๋ค. ์ผ๋ถ ๊ธฐ๋ฅ ์ธํธ์ ๋ํด ๊ด๋ฒ์ํ ์์คํ ์์ค ์ก์ธ์ค๊ฐ ํ์ํ ๊ฒฝ์ฐ ์ฑ์ ํตํด ์ฌ์ฉ์๊ฐ ๊ด๋ฆฌ์๋ก ์คํํ ์ ์์ต๋๋ค. ์ฐ๋ฆฌ ๋ชจ๋๊ฐ ์๊ณ ๊ท์ฌ์ด ์ฌ์ง ํธ์ง๊ธฐ์ ์์๋ ์ฑ์ ๋ง๋๋ ๊ฒ์ ์๋๋๋ค.
@MarkIngramUK ๊ทํ์ ์๊ฒฌ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ํ ๊ฐ์ง ์ค๋ช ๋ง. //Build 2019์ Sneak Peek์์ ์ ์๋ Xaml Desktop ๊ฐ๋ ์ WinUI Desktop์ผ๋ก ์ด๋ฆ์ด ๋ณ๊ฒฝ๋์์ต๋๋ค. ์ด ์๋ก์ด Visual Studio ํ๋ก์ ํธ๋ Win32 ์ฑ ๋ชจ๋ธ์ ์ฌ์ฉํ๊ณ WinUI๋ฅผ ํ๋ ์ ํ ์ด์ ํ๋ ์์ํฌ๋ก ์ฌ์ฉํ๋ฉฐ ๋ค์ดํฐ๋ธ ๋๋ ๊ด๋ฆฌํ(.NET Core 3 ์ฌ์ฉ)์ผ ์ ์์ต๋๋ค.
๊ฐ์ฌํฉ๋๋ค @marb2000 - ์ด๊ฒ์ WinUI 3.0 ๊ธฐ๊ฐ ๋ด์ ์์ต๋๊น?
@marb2000 by WinUI Desktop, Xaml Islands๊ฐ ํฌํจ๋ Win32 ์ฑ์ ์๋ฏธํฉ๋๊น? ์ด๊ฒ์ ์ด๋ ๋น๋ ์ธ์ ์ ํ์๋์์ต๋๊น?
WinUI ํ์ด WinUI 3.0 ์ด๋ฆ ๋ฐ๊พธ๊ธฐ์ ํจ๊ป ์ฃผ์ํด์ผ ํ ํ ๊ฐ์ง: .NET์์ ํ๋ก์ ์ ๋ ์ ํ์ ์ด๋ฆ์ ๋ฐ๊พธ๋ฉด ํ๋ก์ ์ ์ด ์๋ํ์ง ์์ต๋๋ค. ์ ์ง ๊ฐ๋ฅํ ํ์ฅ ๊ฐ๋ฅํ ์์คํ ). ๋ค์์ ์ฐ๋ฆฌ๊ฐ ๊ณํํ๋ ์ ํ ๋ชฉ๋ก์ ๋๋ค. https://github.com/dotnet/coreclr/blob/master/src/inc/winrtprojectedtypes.h
์ด๋ฌํ ์ ํ์ด ์๋ ๋ค๋ฅธ ์ ํ์ ๋ณ๊ฒฝํ๋ ค๋ฉด ์ฌ์ฉ์๊ฐ ๊ฐ์ฒด๋ฅผ ์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ ์ ๊ฐ์ฒด๋ก ๋ํํ๊ฑฐ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ ํ์ ๋ณต์ฌํด์ผ ํฉ๋๋ค. ํนํ INotifyPropertyChanged
๋ฐ INotifyCollectionChanged
์ ํ์ XAML ์์ผ๋๋์ ๊ด๋ จํ์ฌ ๊ด์ฌ์ด ์๊ณ ๋ค์ด์คํธ๋ฆผ ์ง์์ ์ ๊ณตํฉ๋๋ค.
INotifyDataErrorInfo
INotifyDataErrorInfo์ ๊ฐ์ ํญ๋ชฉ์ ๋ํด ์ ๋ค์์คํ์ด์ค๋ฅผ ๋์ ํ์ง ๋ง์ญ์์ค. ์ผ๋ฐ์ ์ผ๋ก ํฌ๋ก์ค ํ๋ซํผ์ด๊ณ WinUI์ ๋ํ ์ข ์์ฑ์ด ์์ด์ผ ํ๋ ๋ณด๊ธฐ ๋ชจ๋ธ์์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์ด์ ๊ฐ์ ๋ค๋ฅธ ํญ๋ชฉ์ด ์๋ ์์น๋ฅผ ์ ์ํด์ผ ํฉ๋๋ค(์: INotifyPropertyChanged ๋๋ INotifyCollectionChanged).
์ด ์ฃผ์ ์ ๋ํด. Windows.UI.Xaml.Interop์๋ ์ด๋ฏธ INotifyCollectionChanged ์ธํฐํ์ด์ค๊ฐ ์๊ณ Windows.UI.Xaml.Data์๋ INotifyPropertyChanged๊ฐ ์์ต๋๋ค. ์ด ๋ ๊ฐ์ง๋ Microsoft ๋ค์์คํ์ด์ค๋ก ์ด๋๋ฉ๋๋ค. ์๋ง๋ System.Runtime.WindowsRuntime ์ด์ ๋ธ๋ฆฌ๋ WinUI์์ .Net์ผ๋ก ์ผ๋ถ ๋งคํ์ ์ํํ ์ ์์ต๋๋ค.
๋ต์ฅ์ ๋ณด๋ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ํ์ง๋ง .NET Standard์ ์ด๋ฏธ System.ComponentModel์ด ์๋ ๊ฒฝ์ฐ Microsoft ๋ค์์คํ์ด์ค์ ํ์ํ ์ด์ ๋ ๋ฌด์์ ๋๊น? https://docs.microsoft.com/en-us/dotnet/api/system.componentmodel.inotifydataerrorinfo?view=netstandard-2.0
@meir-pletinsky. NET์ UWP XAML๋ก ์ฑ์ ๋ง๋๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ๋จ ํ๋์ ํ๋ ์์ํฌ์ ๋๋ค. ์ด๋ค ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์๊ฐ ์ฌ์ฉํ ์ ์๋ ํ ์คํธ ํ๋ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ์ํฉ๋๋ค.
@mdtauk , ์๋์, WinUI Desktop(์ด์ ์ Xaml Desktop)์ ์ฌ์ฉํ๋ฉด ์์ผ๋๋๋ฅผ ์ฌ์ฉํ์ง ์๊ณ Win32์ ํจ๊ป Xaml์ ์ง์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
@marb2000 ์์ฉ ํ๋ก๊ทธ๋จ ํจํค์ง ํ๋ก์ ํธ์์ Win32 ์ฐฝ์ผ๋ก AppX๋ฅผ ๋น๋ํ๊ณ UWP ํ๋ก์ ํธ์ ๋์ผํ ์ฌ์ด ๋ฐฉ๋ฒ์ผ๋ก WinRT ๊ตฌ์ฑ ์์๋ฅผ ํฌํจํ ์ ์๋ค๋ฉด ์ข์ ๊ฒ์ ๋๋ค. ๋ฆฌ์์ค ์ถ๊ฐ ๋ฐ ํฌํจ๋ WinRT ๊ตฌ์ฑ ์์์์ ํค๋๋ฅผ ์์ฑํ๋ cppwinrt ์ปดํ์ผ๋ฌ์ ๊ฐ์ด vcxproj ํ์ผ์ ์๋์ผ๋ก ํธ์งํ์ง ์๊ณ ๋ ์๋ํ์ง ์๋ ๋ง์ ๊ฒ๋ค์ด ์์ต๋๋ค.
์ด ์ UI์ ์ค์ํ ๋ ๋ค๋ฅธ ํ๋ก์ ํธ๋ INotifyPropertyChanged(C#/F#์ผ๋ก ์๋) ์๋ ๊ตฌํ์ ํ์ฉํ๋ Simon Cropp ์ _PropertyChanged.Fody_์ ๋๋ค. https://github.com/Fody/PropertyChanged ์ฐธ์กฐ
๋ค์๊ณผ ๊ฐ์ ๊ฐ๋จํ ์ฝ๋๋ฅผ ํ์ฉํฉ๋๋ค.
[AddINotifyPropertyChanged]
public class Person
{
public string Name { get; set; }
public string FamilyName { get; set; }
public event PropertyChangedEventHandler PropertyChanged;
}
UI์ ๋ฐ์ธ๋ฉํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.
WinUI 3.0์์ ๋ณด๊ณ ์ถ์ ํ ๊ฐ์ง: ํ์ฌ UWP XAML ์ปดํ์ผ๋ฌ( genxbf.dll
)๋ csproj, vbproj ๋๋ vcxproj ํ์ผ์์ ์ฐธ์กฐํ ๋ MSBuild์์๋ง ์ง์ ํธ์ถํ ์ ์์ต๋๋ค. ์ด ๊ธฐ๋ฅ์ ํธ์ถํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ๋ช
๋ น์ค ๋๊ตฌ๊ฐ ์๊ธฐ ๋๋ฌธ์
๋๋ค. Windows 10 SDK ๋ค์ด๋ก๋์๋ Visual Studio๊ฐ ํ์ํ์ง ์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋งค์ฐ ์ด์ํ ๊ฒฐ์ ์ผ๋ก ์๊ฐ๋ฉ๋๋ค. (WDK ์ถ๊ฐ ๊ธฐ๋ฅ์๋ Visual Studio ๋์๋ ํฌํจ๋์ด ์์ง๋ง ์ด๋ฌํ ๋์์ ๋ชจ๋ VS์ ๋
๋ฆฝ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ ๋ช
๋ น์ค ๋๊ตฌ๋ฅผ ํธ์ถํฉ๋๋ค.) ์๋ฅผ ๋ค์ด XbfCompiler.exe
๋ฐ XbfCodeGen.exe
์ถ๊ฐํด ์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค. SDK์ bin ๋๋ ํ ๋ฆฌ๋ก ์ด๋ํฉ๋๋ค. (์ ์์ EXE๋ XAML ํ์ผ์ XBF ํ์ผ๋ก ์ปดํ์ผํ๊ณ ํ์๋ ์ฝ๋์์ XAML ์ ํ์ ์ฐธ์กฐํ๋ ๋ฐ ํ์ํ ์ฝ๋ ์จ๊น ํ์ผ์ ์์ฑํฉ๋๋ค.) ์ด๊ฒ์ CMake ๋๋ ๋ค๋ฅธ ๋น Visual์ ์ฌ์ฉํ๋ C++ ํ๋ก์ ํธ์์ ์ฃผ๋ก ์ ์ฉํฉ๋๋ค. Studio ๋น๋ ๋๊ตฌ์ด์ง๋ง ํ์ํ ๊ฒฝ์ฐ C# ๋ฐ VB.NET ํ๋ก์ ํธ์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ฐ์ฌ ํด์!
@MarkIngramUK WinUI Desktop์ ๋ํด ์์ธํ ์์๋ณผ ์ ์๋ ๊ณณ์ ์์๋์? ํด๋น Build 2019 ์ธ์ ์ ์จ๋ผ์ธ์ผ๋ก ๋ณผ ์ ์์ต๋๋ค. ์ด ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ฐ๊ฒฐ๋์ด์ผ ํ๋ ์ค์ํ ์ ๋ณด์ฒ๋ผ ๋ค๋ฆฝ๋๋ค.
@mdtauk ๋น๋ ์ฐธ์์ ์ ์ฉ์ธ ์ด๋ฅธ๋ฐ Sneak Peek์์ ์ธ๊ธ๋์์ต๋๋ค. Afaik ๋ น์์ด ์์ต๋๋ค. ๋๋ ๊ฑฐ๊ธฐ์ ์์์ง๋ง ์ฌ๋ผ์ด๋๊ฐ ์์ต๋๋ค - ์๋ง๋ ์ต๊ณ ์ ์ฌ๋ผ์ด๋ :-) - Twitter์์ ์ฌ์ฉ ๊ฐ๋ฅ: https://twitter.com/RudyHuyn/status/1126273995366490113
@mdtauk WinUI 3 ๋ก๋๋งต์๋ Build Snek peek์์ ๋ณด์ฌ์ง ๊ฒ๋ณด๋ค ํจ์ฌ ๋ ์ต์ ์ธ ์ต์ ์ ๋ณด์ ๋ค์ด์ด๊ทธ๋จ์ด ์์ต๋๋ค. "XAML ๋ฐ์คํฌํฑ"์ด๋ "WinUI ๋ฐ์คํฌํฑ"๊ณผ ๊ฐ์ ๊ฒ์ ์์ต๋๋ค... ์ฌ์ง์ด ์ฐํ ์ฌ๋ผ์ด๋์์ ํผ๋์ค๋ฌ์ด ๋จ์ด ์ ํ์ด์์ ๋ฟ์ ๋๋ค. ์ ๋ฌ๋๊ณ ์๋ ๊ฐ๋ (๋ก๋๋งต์ ์ด๋ฅผ ๋ณด๋ค ๋ช ํํ๊ฒ ์ค๋ช ํ๋ ค๊ณ ํจ)์ WinUI 3์ ๋ํด WinUI 3์ ์ฌ์ฉํ์ฌ ์๋ก์ด ๊ธฐ์กด ๋ฐ์คํฌํ/Win32 ๋ชจ๋ธ ์ฑ์ ์์ฑํ๋ ํ๋ก์ ํธ ํ ํ๋ฆฟ์ UI์ ์ฌ์ฉํ ์ ์๋๋ก ๋ง๋ค๊ธฐ ์ํด ๋ ธ๋ ฅํ๊ณ ์๋ค๋ ๊ฒ์ ๋๋ค. (์ค๋๋ ๊ธฐ์กด Desktop/Win32 ๋ชจ๋ธ ์์ WinForms, WPF, MFC ๋ฑ์ UI ํ๋ ์์ํฌ์ฉ ํ ํ๋ฆฟ์ด ์๋ ๊ฒ์ฒ๋ผ) WinUI 3๋ฅผ ์ฌ์ฉํ๋ ์ ๋ฐ์ดํธ๋ UWP/WinRT ๋ชจ๋ธ ์ฑ ํ๋ก์ ํธ ํ ํ๋ฆฟ ์ธ์๋ ๋ช ํํํ๋ ๋ฐ ๋์์ด?
3.0 ๋ก๋๋งต ์ ๋ค์ ์ ๋ต์ ๋ํด ๋งค์ฐ ํฉ๋ฆฌ์ ์ผ๋ก ๋ณด์ ๋๋ค. ๋ชจ๋ Windows ํด๋ผ์ด์ธํธ ์ฑ์์ XAML ๋ฐ "ํ๋์ ์ธ" WinUI ์ปจํธ๋กค์ ์ฌ์ฉํ๋๋ก ์ค์ ํฉ๋๋ค.
๊ทธ๋ฌ๋ ์ด ์ ๋ต์ ์ค๋๋ ์์ฅ์ ํ์ค์ ๊ณ ๋ คํ๋ฉด ๊ทผ์์์ ์ผ๋ก ๋ณด์ ๋๋ค. ๋ง์ ์ฑ ๊ฐ๋ฐ์์ Android์ iOS๊ฐ ์ฃผ์ ๋์์ด๊ณ Windows๊ฐ ์์ผ๋ฉด ์ข์ต๋๋ค. .NET ๊ฐ๋ฐ์์ ๊ฒฝ์ฐ Xamarin์ ์ ์ ํ Android ๋ฐ iOS ์ง์์ ์ ๊ณตํ์ง๋ง Windows ์ง์์ ํ์ ์์ค์ ๋๋ค. ๋ฐ๋ผ์ ๊ธฐ๋ณธ ๋ชจ๋ฐ์ผ/๋ฐ์คํฌํฑ ์ฑ์ ๊ฒฝ์ฐ Win UI 3.0์ .NET ๊ฐ๋ฐ์๋ฅผ ์ํ ํ๋ซํผ ๊ฐ ๊ฐ๋ฐ์ ๋จ์ํํ๊ธฐ ์ํด ์๋ฌด ๊ฒ๋ ํ์ง ์์ต๋๋ค.
๋ด๊ฐ ์ ๋ง๋ก ๋ณด๊ณ ์ถ์ ๊ฒ์ ์ง์ ์ผ๋ก ๋ณดํธ์ ์ธ ์ด๋ง์ ๊ฐ์ง ์ง๋ณด์ ์ธ XAML ๋ฐฉ์ธ์ ๋๋ค. XAML์ ์ฌ์ฉํ์ฌ .NET ์ฑ์ ์์ฑํ ์ ์์ด์ผ ํ๋ฉฐ ํด๋น ์ฑ์ Windows, iOS ๋ฐ Android์์ ์คํํ ์ ์์ด์ผ ํฉ๋๋ค. ์ฑ์ ๊ฐ ํ๋ซํผ์์ ์ง์ ์ผ๋ก ์ผ๋ฅ์ฌ์ผ ํ๋ฉฐ ํ์์ ๋ฐ๋ผ ๊ธฐ๋ณธ ์์์ ์ก์ธ์คํ ์ ์์ด์ผ ํฉ๋๋ค. ์ธ๊ธํ๋ฏ์ด Xamarin์ ์ข์ ์์์ด์ง๋ง XAML์ ๋ฐฉ์ธ์ด ๋งค์ฐ ๋ค๋ฅด๊ณ Windows ์ง์์ด ์ด์ ํ๋ฉฐ ์ํ ์ค์ธ ์์ ์ด ๋์์ด ๋์ง ์์ต๋๋ค.
๋ฐ๋ผ์ Windows์ฉ ์ต์ UI ํ๋ซํผ์ ๊ณ์ ์ ๊ณตํ๊ณ ๊ณ์๋ ๊ฒ์ด ์ข์ต๋๋ค. ๋ค์ํ ์ฑ์์ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๊ฒ ํด์ฃผ์ ์ ์ข์ต๋๋ค. ํฌ๋ก์ค ํ๋ซํผ ์ง์์ ์ํ์ง ์๋ ๊ฒ์ ์ข์ง ์์ต๋๋ค.
์ ํ์ ์ผ๋ก ์ผ์ ์ค๋จ + ์ญ์ ํ์์ ๊ฐ์ ๋ ๊ฑฐ์ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์๋ช ์ฃผ๊ธฐ ๋์์ ๋นํ์ฑํํ๊ฑฐ๋ ์ตํธ์์ํฉ๋๋ค.
ํ์ค์ UWP๊ฐ ๋ฐ์คํฌํฑ ํ๊ฒฝ์ด๊ณ ์ ์ด๋ ๊ฒ์์ ๊ฒฝ์ฐ ์ฌ์ฉ์๊ฐ ์ฑ์ ์ต์ํํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ ์ผ๋ฐ์ ์ผ๋ก ์ฑ์ ์ผ์ ์ค๋จ/์ญ์ ํ์ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ด๊ฒ์ ํผ๋์ค๋ฌ์ด ๊ฒฝํ์ด๋ฉฐ win32 ๋ฐ์คํฌํ ์ฑ์ด๋ ๊ฒ์๊ณผ ๋งค์ฐ ๋ค๋ฆ ๋๋ค. ์์ง ๋ง๋ฃ๋ ๊ฐ๋ฅ์ฑ์ด ์๋ ์ฐ์ฅ ์ฐ๊ธฐ๋ฅผ ์์ฒญํ๋ ๊ฒ๋ง์ผ๋ก๋ ์ด๋ฅผ ์ํํ๊ฒ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
์ด ์๋ช ์ฃผ๊ธฐ๋ ์ผ๋ถ ์ฑ์ ์ ์ฉํ์ง๋ง ๋ค๋ฅธ ์ฑ์๋ ํด๋กญ์ต๋๋ค. ์ด์์ ์ผ๋ก ๋ฐ์คํฌํฑ ์ฑ ๋๋ ๊ฒ์์ ์ฑ์ด ์ผ์ ์ค๋จ+์ญ์ ํ์ ์๋ช ์ฃผ๊ธฐ ๋ชจ๋ธ์ ์ ํ ํด์ ํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ์ธํ ์ ์์ด์ผ ํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ์ต์ํ๋ ๋ ๊ถ๊ทน์ ์ผ๋ก ์ผ์ ์ค๋จ๋์ง ์์ต๋๋ค.
@natemonster
๋น: https://docs.microsoft.com/windows/uwp/launch-resume/run-minimized-with-extended-execution
๋ฐ์คํฌํฑ ์ฅ์น์์ ExtendedExecutionReason.Unspecified๋ก ์์ฑ๋ ํ์ฅ ์คํ ์ธ์ ์๋ ๋ฐฐํฐ๋ฆฌ ์ธ์ ์๊ฐ ์ ํ์ด ์์ต๋๋ค. ์ฅ์น๊ฐ ๋ฒฝ ์ ์์ ์ฐ๊ฒฐ๋์ด ์๋ ๊ฒฝ์ฐ ํ์ฅ๋ ์คํ ๊ธฐ๊ฐ์ ๊ธธ์ด์ ์ ํ์ด ์์ต๋๋ค. ์ฅ์น๊ฐ ๋ฐฐํฐ๋ฆฌ ์ ์์ผ๋ก ์ผ์ ธ ์๋ ๊ฒฝ์ฐ ํ์ฅ๋ ์คํ ์๊ฐ์ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์ต๋ 10๋ถ๊น์ง ์คํ๋ ์ ์์ต๋๋ค.
ํ๋ธ๋ฆฟ ๋๋ ๋ฉํฑ ์ฌ์ฉ์๋ ์ฑ ์ค์ ๋ณ ๋ฐฐํฐ๋ฆฌ ์ฌ์ฉ๋์์ ์ฑ์ด ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ ์คํํ๋๋ก ํ์ฉ ์ต์ ์ ์ ํํ ๊ฒฝ์ฐ ๋ฐฐํฐ๋ฆฌ ์๋ช ์ ํฌ์ํ๋ฉด์ ๋์ผํ ์ฅ๊ธฐ ์คํ ๋์์ ์ป์ ์ ์์ต๋๋ค.
@TonyHenrique Fody ๋ฅผ ์ธ๊ธ ํ ๋ ์ ๋๊น , ์๋๋ฉด WinUI์ ๋ด์ฅ๋์ด์ผ ํ๋ค๋ ๋ง์์ ๋๊น?
์์ดํ ์ด๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ ํ๋ฆฟ๋ ์ฌ๋ฏธ์์ต๋๋ค! Windows ํ ํ๋ฆฟ ์คํ๋์ค์ ๊ฐ์ด ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์ถ๊ฐํ๋ ๊ฒ์ ๊ณ ๋ คํ ์ ์๋ ์ถ๊ฐ ์์ฉ๊ตฌ ๋ฐ ์์ ์ฝ๋๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ ๋ํด ์ง๊ธ๊น์ง ๋ต๋ณ์ ๋ช ๊ฐ์ง ์ข์ ์ ์ด ์์ต๋๋ค.
@Jesbis ์ ๋ Windows Template Studio์ ํต์ฌ ๊ธฐ์ฌ์์ด๋ฉฐ ์ฐ๋ฆฌ๊ฐ ๋ฏธ๋์ ํ ์ผ๊ณผ WPF ์ง์์ ๋์ ํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๊ด์ ์์ WinUI ๋ก๋๋งต์ ๋ณด๊ณ ์์ต๋๋ค. ;)
์ด๋ค ์ข ๋ฅ์ ์ข ์์ฑ ์ ๋ฐ์ดํธ๊ฐ ๋ ๊ฐ์น๊ฐ ์์ต๋๊น? ์๋ฅผ ๋ค์ด ํธํ๋๋ ์๋ก์ด NuGet ํจํค์ง ๋ฒ์ ์ ์ฐพ๊ณ ๊ณ์ญ๋๊น?
NuGet ์ ๋ฐ์ดํธ๋ฅผ ๊ฐ์งํ ์ ์์ผ๋ฉด ๋ ์ ์ฉํ์ง๋ง ์ ๋ฐ์ดํธ๋ฅผ ์ํํ ๋ ๋ค๋ฅธ ์ ์ฌ์ ์ธ ํธํ์ฑ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๋๋ ์ ๋ฒ์ ์ ๊ฐ์งํ๊ณ ์๋ ๋ณํ์ ๋ฎ์ ์ฐ์ ์์๋ก ๋ง๋ค ๊ฒ์ ๋๋ค. ๊ณ ๋ ค ์ฌํญ์ด ๋๋ฌด ๋ง์์ ๊ทธ ์์ฒด๋ก ํฐ ํ๋ก์ ํธ๊ฐ ๋ ๊ฒ์ด๋ฉฐ ์ด๋ฌํ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ ํ๋ซํผ์ ์๊ฐ์ ํฌ์ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
@mrlacey ์ ๋ Fody๊ฐ ํฅ๋ฏธ๋ก์ด ์๋ฃจ์
์ด๋ผ๊ณ ์๊ฐ ํ๊ณ _INotifyPropertyChanged_ ์์ฉ๊ตฌ ์ฝ๋๋ฅผ ํผํ๋ ๋ ๋์ ๋ฐฉ๋ฒ์ด ํ์ํ๋ค๊ณ ์๊ฐํ๊ธฐ ๋๋ฌธ์ Fody๋ฅผ ์ธ๊ธํ์ต๋๋ค . ์ผ๋ถ ์์ฑ์ด ๋ณ๊ฒฝ๋ ๋ ์๋์ผ๋ก ์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํค๋ Reactive ๊ฐ์ฒด์ ๊ฐ๋
์ ๋ํ MS ์ง์ ์๋ฃจ์
์ด ์์ผ๋ฉด ์ข์ ๊ฒ์
๋๋ค.
C# ํด๋์ค์ F# ๋ ์ฝ๋์์๋ ์๋ํ์ง๋ง ๋ช ๊ฐ์ง ์ด๋ ค์์ด ์์ต๋๋ค.
๋ฐ๋ผ์ WinUI ๋ก๋๋งต์๋ ์ด๊ฒ์ด ์์ด์ผ ํฉ๋๋ค.
์ฐธ๊ณ : F# ๋ ์ฝ๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ์ํฐํฐ๋ฅผ ์ ์ํ๊ณ XAML UI์ ์ง์ ๋ฐ์ธ๋ฉํ ์๋ ์์ผ๋ฉด ์ข์ ๊ฒ์ ๋๋ค. F# Records + Fody + DataBinding์ ๋ฌธ์ ์์ด ์ฌ์ฉํ ์ ์๋ค๋ฉด ์ ๋ง ์ข์ ๊ฒ์ ๋๋ค.
[<PropertyChanged.AddINotifyPropertyChangedInterfaceAttribute>]
[<CLIMutable>]
type Person =
{
ID: Guid
mutable Name: string
mutable Addresses: ObservableCollection<Address>
}
์ด๊ฒ์ C#์์ ์ค๋ ์ฌ๋๋ค์๊ฒ ๋ ์น์ํ ๊ฒ์
๋๋ค.
๋ ๋ค๋ฅธ ์ ๊ทผ ๋ฐฉ์์ Elmish ๋ฐฉ์์
๋๋ค. ๋ ๋ค ํฅ๋ฏธ๋กญ๊ณ ์ง์๋ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
@tonyhenrique / @mrlacey Fody ํญ๋ชฉ (OAP)์ ๋ฒ์๋ฅผ ๋ฒ์ด๋์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. WinUI ํ์ ์ด๋ฏธ ์ถฉ๋ถํ ๊ฐ์ง๊ณ ์๊ณ , ๋๋ ๋ณ๋์ ํ๋ก์ ํธ์์ ์ง๋ ๊ฒ์ด ๋ ๋ซ๋ค๊ณ ์๊ฐํฉ๋๋ค(๊ฐ์ ์ ๊ฒฝ์ฐ ํจ์ฌ ๋ ๋น ๋ฅธ ๋ฆด๋ฆฌ์ค ์ฃผ๊ธฐ).
๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ ์ค์ ๋ก ๋ชจ๋ธ์ .NET(IL) ๊ตฌํ ์ธ๋ถ ์ ๋ณด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ค์ ๋ก WinUI์ ๊ด๋ จ์ด ์๋ ๊ฒ์ ์๋๋๋ค(๋ณ๊ฒฝ ์ด๋ฒคํธ๋ฅผ ์์ ํ ์ ์์ง๋ง). ์ ์ ์์ ๊ทธ๊ฒ๋ค์ ๋ฐ๋ก ๋ณด๊ดํ๋ ๊ฒ์ ๋๋ค. ์๋ฅผ ๋ค์ด, ์ ๋ Catel์ ์ฌ์ฉํ๋ฉฐ ๋ชจ๋ ๊ฒ์ด ์ฌ๋ฐ๋ฅด๊ฒ ์ง์ฌ์ก๋์ง ํ์ธํ๊ธฐ ์ํด ์์ฒด Fody weavers๊ฐ ์์ต๋๋ค.
๋ด๊ฐ ์ ๋ง๋ก ๋ณด๊ณ ์ถ์ ๊ฒ์ ์ง์ ์ผ๋ก ๋ณดํธ์ ์ธ ์ด๋ง์ ๊ฐ์ง ์ง๋ณด์ ์ธ XAML ๋ฐฉ์ธ์ ๋๋ค. XAML์ ์ฌ์ฉํ์ฌ .NET ์ฑ์ ์์ฑํ ์ ์์ด์ผ ํ๋ฉฐ ํด๋น ์ฑ์ Windows, iOS ๋ฐ Android์์ ์คํํ ์ ์์ด์ผ ํฉ๋๋ค. ์ฑ์ ๊ฐ ํ๋ซํผ์์ ์ง์ ์ผ๋ก ์ผ๋ฅ์ฌ์ผ ํ๋ฉฐ ํ์์ ๋ฐ๋ผ ๊ธฐ๋ณธ ์์์ ์ก์ธ์คํ ์ ์์ด์ผ ํฉ๋๋ค.
๊ทธ ๋ฐฉํฅ์ผ๋ก ๋์๊ฐ๊ธฐ ์ํ ์ค๋ ์ ์์ด ์์ต๋๋ค: .NET 5์ฉ ํฌ๋ก์ค ํ๋ซํผ UX - ์๋ณธ ์ ๋ชฉ Cross platform UX for .NET Core 3.0
. ์ด์ ๋ํ ์ปค๋ฎค๋ํฐ์ ์๋์ ์ธ ์ง์์ ๋ถ๋ช
ํ๋ฉฐ MSFT๊ฐ ์ด๊ฒ์ด .NET์์ ์๋ํ๋ ๋ชจ๋ UI ํ๋ ์์ํฌ๋ฅผ ๊ฐ๋ฐํ๋ ์ต์ ์ ๋ฐฉํฅ์์ ๊นจ๋ฌ์ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ์๋ก ๋ค๋ฅธ ํ๋ซํผ ๊ทธ๋ฃน์ ๋ํด ๋ณ๋์ ์ฝ๋๋ฒ ์ด์ค๋ฅผ ์ ์งํ๊ณ .NET์์ ์ง์ํ๋ ์๋ก ๋ค๋ฅธ UX ํ๋ ์์ํฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ณ๋์ ๊ฐ๋ฐ์ ๊ธฐ์ ์ธํธ๋ฅผ ๊ฐ์ ๋ก ์์ฑํ ์ด์ ๊ฐ ๊ฑฐ์ ์์ต๋๋ค.
๋ชจ๋ ํ๋ซํผ์ ์ํ ๋จ์ผ UX๋ฅผ ์์ฑํจ์ผ๋ก์จ ์ฐ๋ฆฌ๋ ํ๋ ์์ํฌ ๊ฐ๋ฐ์ ๋ชจ๋ ๋นํจ์จ์ฑ์ ์์ ๊ณ ๊ฐ๋ฐ์ ์ฑํ์ ๋ํ ์ฅ๋ฒฝ์ ๋ฎ์ถฅ๋๋ค.
@mfeingol / @4creators
์ฑ์
๊ฐ ํ๋ซํผ์์์ง์ ์ผ๋ก ์ผ๋ฅ์ฌ์ผ ํฉ๋๋ค.
์์ํ๋ ค๋ฉด Windows์์...
์ง๊ธ์ 2019๋
, ๋น ๋ฅธ ๋ค์ดํฐ๋ธ UI๋ฅผ ์ํ๊ณ CreateWindowExW
, GDI ๋ฑ์ผ๋ก ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๋ง๋๋ ๊ฒ์ ์ฌ๊ฐํ๊ฒ ๊ณ ๋ คํ๊ณ ์ถ์ง ์์ต๋๋ค.
์ด์ WinUI 3.0 ์ด์์์๋ ์ฝ๋๊ฐ Windows 10์์ ๋ถ๋ฆฌ๋์์ผ๋ฏ๋ก ํฅํ WinUI๊ฐ Linux ๋ฐ Mac์์ ์๋ํ ๊ณํ์ด ์์ต๋๊น?
@jesbis Touch ์ํธ ์์ฉ ์ WinUI 3.0์์ ์ ์ง๋ฉ๋๊น?
์ค๋ช ๊ฐ์ฌํฉ๋๋ค. 3.0์ด ์๋ํ๋ ๋ฐฉ์์ Community Toolkit์ ์ฌ์ฉํ๋ ๋์ WinUI์ Xaml Islands๋ฅผ ํฌํจํ๋ ๊ฒ์ด๋ผ๊ณ ๊ฐ์ ํ์ต๋๋ค.
XAML + Win32๊ฐ ๋๋ฉด์ ํนํ Windows Core OS๊ฐ XAML์์ ์ ธ์ ๋ค์ ์์ฑํ๋ ๊ฒ์ด ๋ ํฉ๋ฆฌ์ ์ ๋๋ค.
๋ด๊ฐ ์ง๊ธ ์ดํดํ๋ ๊ฒ์ฒ๋ผ ์ด ํ๋ถํ Win32 API ์ก์ธ์ค๋ C ๋ฐ C++๋ก | .NET์ ์์กดํ๋ C#์ ๋ชจ๋ ๊ฒ(์ง๊ธ์ ๋ชจ๋ .NET Core์).
์๋ง๋ ์ด๋ฌํ Win32 API์ ์ก์ธ์คํ๋ ์์ ํ๊ณ ๊ฐ๋จํ ๋ฐฉ๋ฒ๊ณผ ์ฑ UI๋ฅผ ํ์ํ๊ธฐ ์ํ ๋ ๋ง์ ์ง์ ์ ์ด ์์ด์ผ ํฉ๋๊น?
WinUI 3 ์ฑ์ฉ ์์คํ ํธ๋ ์ด XAML ํ๋ผ์ด์์
Hololens/Xbox/Surface Hub/IoT ๋ฑ์ ์ํ ๊ฐ๋จํ ์ ํ๊ธฐ UI
์ ๋ฐ์ดํธ๋ XAML ์ฌ์ฉ์ ์ง์ ๊ฐ๋ฅํ ๊ณตํต ํ์ผ ๋ํ ์์ ๋ฐ ํด๋ ์ ํ๊ธฐ
Win32 API์ ๋ํ ๊ฐ๋จํ C# .NET ์ก์ธ์ค
Win32 ๋ฐ WPF ์ปจํธ๋กค ํฌ๊ธฐ ์กฐ์ ๊ณผ ์ผ์นํ๋ ๋ชจ๋ XAML ์์์ ๋ํ ์ปดํฉํธ ์ค์ (์ด๋ ๊ฒ ํ๋ฉด ํ๋ ์์ํฌ๊ฐ ํธ์ํ๊ฒ ํจ๊ป ์๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค)
WinUI ์ฌ์ฉ ์ ์ปจํธ๋กค ์คํ์ผ/๊ธ๊ผด/์ก์ผํธ ๋ธ๋ฌ์/์ํฌ๋ฆด ์ผ์น
WinRT/Mobile ์๋ช ์ฃผ๊ธฐ๊ฐ ํ์ํ ์ฅ์น์ ๋ํ ๋ช ํํ ์ ์
Windows์์ Xbox ์ฑ ๊ฐ๋ฐ ๋ฐ ํ ์คํธ๋ฅผ ์ํด ๊ธฐ๋ณธ ์ ๊ณต๋๋ Xbox Next ์ปจํธ๋กค ์คํ์ผ
๊ธฐ๋ณธ์ ์ผ๋ก ์ ์ฅ ๋ฐ ๋จ์ผ exe/MSI/APPX ํจํค์ง ๋ฐ ๋ค์ด๋ก๋ ์ง์, ์ค์น์ ์์, ๊ธฐ๋ณธ์ ์ผ๋ก 100๋ ์ ํ ํ์ผ ์์คํ ๊ฐ์ํ
WinForms WinUI 3.0 - ๊ฐ๋จํ UI, MFC์ ๋ํ ์ก์ธ์ค, ๋ง์ฐ์ค ๋ฐ ํค๋ณด๋ ์ ์ฉ
WPF WinUI 3.0 - ๊ณ ๋ฐ๋ UI, 3D ๋ ๋๋ง, DPI ์ธ์, ์๋ฎฌ๋ ์ด์ ๋ ํฐ์น ๋ฐ ๊ธฐ๋ณธ ์ํฌ ์ง์
Xaml WinUI 3.0 - ํ ํฐ์น, MR, ๊ฒ์ํจ๋, ์ํฌ, ์์ฑ, ๋ง์ฐ์ค, ํค๋ณด๋. ์กฐ๋ฐํ๊ณ ๋จ์ํ UI. ์๋ก์ด ์๋์ฐ ์ง์. MR 3D ๋ ๋๋ง. ์ ํ์ ๊ด๋ฆฌํ ์๋ช ์ฃผ๊ธฐ ๋๋ ๋ฐ์คํฌํฑ ์๋ช ์ฃผ๊ธฐ. ๋ฉ๋ชจ์ฅ, ์ฐธ ์ง๋, ํ์ธํธ, ํ์ผ ํ์๊ธฐ์ ๊ฐ์ ๋ฐ์ ํธ์งํจ ์ฑ์ Win32 ๋ฒ์ ๊ณผ ํจ๊ป ์ ธ ๋ฐ ์ฌ์์ ๋ ๋ฐ์ ํธ์งํจ ์ฑ์ ๋ํ ๋ชจ๋ ์ธ๊ณ์ ๊ธฐ๋ณธ์ด ์คํ ์์ค์ด๋ฉฐ ์คํ ์ด์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
ํฐ์น ์ํธ ์์ฉ์ WinUI 3.0์์ ์ ์ง๋ฉ๋๊น?
@r7dev ๋ค, ๋์ผํ ์์ค์ ํฐ์น ์ง์์ ์ ์งํ ๊ณํ์ ๋๋ค.
F#์ WinUI 3.0 ๋ก๋๋งต์์ ๋ฌด์๋ฉ๋๋ค. Microsoft๋ ๋ค์ ํ ๋ฒ ์์ฌ ์ ํ ์ค ํ๋๋ฅผ ๋ฌด์ํฉ๋๋ค.
๋ด๊ฐ ๋ํ ์๊ฐํ ๊ฒ์ win32๊ฐ ๋๋ฌด ๋ถ์ด์๋ ์ด์ ์ ๋๋ค. ๋๋ ์ด๊ฒ์ด ๋ ๊ฑฐ์ ํ๋ก์ ํธ ๋๋ฌธ์ด๋ผ๋ ๊ฐ์ ์ด ์๋ค๊ณ ์๊ฐํ์ง๋ง ์ค์ ๋ก๋ ๊ทธ๋ณด๋ค ํจ์ฌ ๋ ๊น์ต๋๋ค. Win32 ABI๋ ์ ํํ ์ธ์ด, nodejs, python, rust, go, ruby, C#, C++ ๋ฑ๊ณผ ์ฐ๊ฒฐํ๊ธฐ๊ฐ ๋งค์ฐ ์ฝ์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ด ํต์ฌ ํ๋ก์ ํธ๊ฐ ๋ น์ฌ๊ณ ์ฐฝ์ ์์ฑํ๊ณ ์ถ์ ๊ฒฝ์ฐ ์ถ๋ ฅ์ ๊ด๋ฆฌํ๊ธฐ ์ํด Rust ๊ฐ๋ฐ์๋ก์ win32 API ์ธํธ์ ์ก์ธ์คํ๊ณ ๋์ผํ ์ธ์ด๋ก ํ๋ก ํธ ์๋๋ฅผ ๊ตฌ์ถํ๋ ๊ฒ์ ๋งค์ฐ ๊ฐ๋ ฅํฉ๋๋ค.
OS X์์ AppKit์ ์ก์ธ์คํ๋ ค๋ฉด objc_msgSend C API๋ฅผ ์ฐ๊ฒฐํ๊ณ ์ ์ฒด obj-c ์ธํ๋ผ์ ์ก์ธ์คํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. ์์ ๋ชจ๋ ์ธ์ด๋ ์ด๋ฅผ ์ฐ๊ฒฐํ๋ ์ญํ ์ ํ๋ฅญํ๊ฒ ์ํํ์ผ๋ฉฐ ์ ํํ ์ธ์ด๋ก ์ฝ๊ฒ ์์ฑํ๊ณ ๋งค๋ ฅ์ ์ธ ๊ฒ์ ์์ฑํ ์ ์์์ต๋๋ค.
๋ฐ๋ผ์ WinUI 3.x๊ฐ ๋ฎ์ ๋๊ธฐ ์๊ฐ, ๋ฎ์ ๋ฉ๋ชจ๋ฆฌ, ๋์ ํ์ง์ Win32 UI์ ์ก์ธ์คํ๊ธฐ ์ํ ์ง์ ํ ๊ฒฝ๋ก๊ฐ ๋๋๋ก ํ๋ ค๋ฉด ๋ค๋ฅธ ์ธ์ด ์ ์ง ๊ด๋ฆฌ์๊ฐ ์ธํ๋ผ์ ์ ๊ทผํ ์ ์๋ ์ฉ์ด์ฑ์ ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
UI๋ฅผ ์์คํ ์์ ๋ถ๋ฆฌํ ๊ณํ์ด๋ผ๋ฉด ๊ฐ OS ์ ๊ทธ๋ ์ด๋์ ์ผ๊ด๋๊ฒ ์ ์ง๋๋ UI์ ๋ํ ๊ณํ์ ๋ฌด์์ ๋๊น? Apple์ด AppKit ๋๋ iOS์์ ๊ทธ๋ฆผ์ ๋ฐ ๊ทธ๋ผ๋์ธํธ๋ฅผ ์กฐ์ ํ ๋ ์์คํ ํ๋ ์์ํฌ์ ์์กดํ๋ ์ฑ์ ์ด๋ฌํ ์กฐ์ ์ ๋ชจ๋ ์์ํ๊ณ ์ผ๊ด์ฑ์ ์ ์งํฉ๋๋ค. ๋ํ 3๋ ์ ์ UI ์ธํ๋ผ์ ์ ๊ธด ์ฑ์ด ์ผ๋ถ ์๋ก์ด ์์คํ ์๋น์ค์์ ์ ๋๋ก ์๋ํ์ง ์์ ์ ์์ผ๋ฏ๋ก ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ๋ค๋ฅธ ํธํ์ฑ ๊ณ์ธต์ ๊ฐ๊ฒ ๋ ์ ์๊ธฐ ๋๋ฌธ์ ์์คํ ์ ์ฒด ๊ฒฝํ์ ์ถ๊ฐํ๊ธฐ๊ฐ ์ด๋ ค์ธ ๊ฒ์ ๋๋ค.
ํญ์ ์ ํํด์ผ ํ๋ ๊ธฐ๋ฅ์ด ์์ ๊ฒ์ ๋๋ค. ์ ๋ ๋คํฌ ๋ชจ๋๋ฅผ ์ฑ์ด ์ด๋ฅผ ์ํด ์ค๊ณ๋์ง ์์๋ค๋ฉด ์ต์ ์ผ๋ก ์ ๊ณตํ๋ ๊ฒ์ด ์ ๋ง ์๋ฏธ๊ฐ ์๋ ๊ฒ์ผ๋ก ์๊ฐํ ์ ์์ง๋ง ์ฌ์ ํ ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ๋ณ๊ฒฝ๋๋ ์์คํ ๊ตฌ์ฑ ์์์ ๋ํ ์กฐ์ .
์ด ๋ชจ๋ UI.dll์ ์ฐ๋ฆฌ ํ๋ก์ ํธ์ ํจ๊ป ์ ๊ณตํ๊ธฐ ์ํ ๊ณํ๋ ์คํ ๋ฆฌ๋ ๋ฌด์์ ๋๊น? ์ด๋ฌํ ๊ฒ๋ค์ด ์ฐ๋ฆฌ ํ๋ก์ ํธ์ ํจ๊ป ์ ๊ณต๋์ด์ผ ํ๋ 40MB์ ๋ฐํ์์ด ๋ ๊น์? ํ๋ก์ ํธ๊ฐ ์ค๋จ๋๋ฉด ์ค๋๋ UI ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๊ตฌ์์ผ๋ก ๋ณด์ด๊ธฐ ์์ํฉ๋๊น?
C++์ ์ฅ์ ์ค ํ๋๋ ์ฝ๋๋ฒ ์ด์ค์ ๋ฐ๋ผ ์ต์ํ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค๋ฒํค๋๊ฐ ์๋ค๋ ๊ฒ์ ๋๋ค. ํ์คํ ์ฌ๊ธฐ์์ ๋์ค๋ ๋ชจ๋ ๋จ์ผ ์ฑ์ WinUI 3.x๊ฐ ํ์ํ๋ค๋ฉด 40mb x ์ฑ ์๊ฐ ๋ ๊ฒ์ ๋๋ค.
๋ฐ์ด๋๋ฆฌ ํฌ๊ธฐ
WinUI๋ .NET๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์ด๋ฏธ ์ข
์์ฑ์
๋๋ค. ์ด๋ฏธ ์์คํ
์ ์ฒด์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์
๋๋ค. :)
๋น์ ์ ์ค๋ณต๋ dll์ ๊ฐ์ง๊ณ ์์ง ์์ผ๋ฉฐ ๋น์ ์ ๊ทธ๊ฒ์ ๊ฐ์ง์ง ์์ ๊ฒ์
๋๋ค.
https://www.microsoft.com/store/productId/9N00JJ7S3L39
@eklipse2k8
"์ ๋ ์๊ฐํ ๊ฒ์ win32๊ฐ ๊ณ์ ๋ฉ์ถฐ์๋ ์ด์ ์ ๋๋ค. ์ด๊ฒ์ด ๋ ๊ฑฐ์ ํ๋ก์ ํธ ๋๋ฌธ์ด๋ผ๋ ๊ฐ์ ์ด ์์ง๋ง ์ค์ ๋ก๋ ๊ทธ๋ณด๋ค ํจ์ฌ ๋ ๊น์ต๋๋ค. Win32 ABI๋ ์ ํํ ์ธ์ด์ ์ฐ๊ฒฐํ๊ธฐ๊ฐ ๋งค์ฐ ์ฝ์ต๋๋ค. , nodejs, python, rust, go, ruby, C#, C++ ๋ฑ. ์๋ฅผ ๋ค์ด ๋ด ํต์ฌ ํ๋ก์ ํธ๊ฐ ๋ น์ ์๊ณ ์ถ๋ ฅ์ ๊ด๋ฆฌํ๋ ์ฐฝ์ ์์ฑํ๋ ค๋ ๊ฒฝ์ฐ ๋ น ๊ฐ๋ฐ์๋ก์ ๋งค์ฐ ๊ฐ๋ ฅํฉ๋๋ค. win32 API ์ธํธ์ ์ก์ธ์คํ๊ณ ๋์ผํ ์ธ์ด๋ก ํ๋ฐํธ ์๋๋ฅผ ๊ตฌ์ถํ์ญ์์ค."
์ ์ธ์ด์ ๋ํ WinRT ์ง์์ ๊ตฌํํ๋ ๊ฒ์ ๊ทน๋ณตํด์ผ ํ ํฐ ๋ฌธ์ ์ด๊ธฐ ๋๋ฌธ์ ํผํฉ ๋ฐฑ์ ๋๋ค. ์ผ๋จ ์ํํ๋ฉด ์ API์ ๋ํ ์๋ ์์ฑ๋ ํ์ํ๋ ๋ฐ์ธ๋ฉ์ผ๋ก ๋๋ฉ๋๋ค. ์ ๋ ์ต๊ทผ์ Win32์ WinRT๋ฅผ ์ฐ๊ฒฐํ๋ Rust ํ๋ก์ ํธ(Win32 ์ฐฝ์์ Composition API ์ฌ์ฉ)์ ๋ํด ์์ ํด ์์ผ๋ฉฐ, ๋๋จธ์ง ๋ถ๋ถ์ ์ํด๊ฒ ์์ ํด์ผ ํ์ง๋ง Win32 ๋ถ๋ถ์ ํ์คํ ์ ๋ฐ์ ์ผ๋ก ๋ ๊ณ ํต์ค๋ฌ์ ์ต๋๋ค. ํด๋์ค ์์๊ณผ ๊ฐ์ ์ผ๋ถ WinRT ๊ธฐ๋ฅ์ ๋ํ Rust ์ง์ ๋ถ์กฑ. (Win32 ๋ด์์ ์ปดํฌ์ง์ ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ด์ ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ ํ์คํ ๋์์ด ๋ฉ๋๋ค. ์ ์ฒด ์ฑ ๋ชจ๋ธ์ ํ ๋ฒ์ ์ฒ๋ฆฌํ์ง ์๊ณ ๋ ์ด ๊ธฐ๋ฅ์ ๋ํ ์ง์์ ์ ์ง์ ์ผ๋ก ๊ฐ์ ํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.)
์๋ง๋ ๊ฐ์ฅ ํฐ ๋ฌธ์ ๋ ๋ฎ์ ์์ค์ WinRT ABI ์ธ๋ถ ์ ๋ณด์ ๋ํ ๋ฌธ์๊ฐ ์ผ์ข ์ ๋ฌด์ง์ํ๊ณ ์ธ๊ณ/์ปค๋ฎค๋ํฐ์์ ์ด์ ๋ํ ์ดํด๋ ์ธ์์ด ๊ฑฐ์ ์๋ค๋ ๊ฒ์ ๋๋ค. ํ์ง๋ง xlang ํ๋ก์ ํธ๋ฅผ ํตํด ์ด ์ํฉ์ด ๊ฐ์ ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
์ด๋ค ํ ํ๋ฆฟ์ ๊ฐ์ฅ ๊ด์ฌ์ด ์์ต๋๊น?
ํ์ฌ ์ ๋ ๋น ์ฑ(์ ๋๋ฒ์ค Windows) ํ๋ก์ ํธ์์ ์์ํ๋ ๊ฒ์ ์ ํธํฉ๋๋ค. ์ ๋ ๋ฏธ๋ฆฌ ๊ตฌ์ฑ๋ ํ๋ ์์ํฌ๊ฐ ์๋ ํ ํ๋ฆฟ๋ ์ข์ํ์ง๋ง ๋น ๋ฅด๊ฒ ์๋ํ๊ณ ์ถ์ ๋๋ง ์ฌ์ฉํฉ๋๋ค. UWP์ฉ "์ฃผ ๋ฉ๋ด" ํ ํ๋ฆฟ ๋ฐ MDI ํ ํ๋ฆฟ๋ ์ข์ต๋๋ค(์ด๋ฌํ ํ ํ๋ฆฟ์ WinForms์๋ ์กด์ฌํ๊ธฐ ๋๋ฌธ์).
๋ฐ์คํฌํฑ ์ฑ ํ๋ํ๋ฅผ ์ํ Xaml Islands๋ฅผ ์๊ณ ๊ณ์ จ์ต๋๊น?
Windows 10์์ ํ์ฅ๋ ์ด์ ๋ฒ์ ๊ณผ์ ํธํ์ฑ์ผ๋ก ์ธํด Xaml Islands๊ฐ ๋ ์ ์ฉํฉ๋๊น?
์, Xaml Island๋ฅผ ์๊ณ ์์ต๋๋ค. ๊ฐ๋ฅํ๋ค๋ฉด ์์ WPF ๋๋ ์์ UWP ์ฑ์ ์ฌ์ฉํ๋ ค๊ณ ํฉ๋๋ค. ๊ทธ๋ฐ ๊ธฐ๋ฅ์ด ํ์ํ ์ํฉ์ ์๋์์ต๋๋ค.
Visual Studio ๋๋ ๋ค๋ฅธ ๋๊ตฌ๊ฐ ์๋์ผ๋ก ๋ค์์คํ์ด์ค๋ฅผ ์ ๋ฐ์ดํธํ๋ฉด ๋์์ด ๋ ๊น์?
์, ์์ ์ ์ผ๋ก ์๋ํ๋์ง ํ์ธํ์ญ์์ค! ๋๋ ๊ทธ๋ฐ ์ข์ ๊ธฐ๋ฅ์ ๋์ด ํ๊ฐํ์ง ์๋ ๋ง์ ์๊ฒฌ์ ๋๋์ต๋๋ค. ๋ํ ์ด ๊ธฐ๋ฅ์ WinUI 3.0 ์ ๋ฐ์ดํธ๊ฐ ๊ฐ๋ฅํ์ง ํ์ธํ๊ณ , XAML ์ฝ๋๋ฅผ ์ฑํํ๊ณ , ๋ค์์คํ์ด์ค๋ฅผ ์กฐ์ ํ๊ณ , ํ์ํ WinUI ๋๊ฒ์ ์ค์นํ ์ ์์ต๋๋ค.
๊ธฐ์กด UWP Xaml ๊ตฌ์ฑ ์์์ WinUI 3.0 ์ฑ ๊ฐ์ ์์ ํ ํธํ์ฑ์ด ์ผ๋ง๋ ์ค์ํฉ๋๊น?
WinUI 3.0์์ ์์ ํ ์๋ํ๋๋ก ์ปจํธ๋กค์ ๋ค์์คํ์ด์ค๋ง ๋ณ๊ฒฝํ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค. WinUI 3.0์ผ๋ก ์ ๊ทธ๋ ์ด๋ํ๋ ๋ฐ ๋ง์ ์๊ฐ์ ํฌ์ํ๊ณ ์ถ์ง ์์ต๋๋ค.
์ฑ ์ฝ๋์ ํจ๊ป ์ฝ๊ฒ ๋ค์ ์ปดํ์ผ ๋ฐ ์ ๋ฐ์ดํธํ ์ ์๋ UWP Xaml ์ ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋๋ WinRT ๊ตฌ์ฑ ์์๋ฅผ ๋ง๋ค๊ฑฐ๋ ์ฌ์ฉํฉ๋๊น?
ํ์ฌ UWP Xaml ์ ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ(์: Windows Community Toolkit, https://github.com/kakone/VLC.MediaElement )๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. Dockpanel๊ณผ ๊ฐ์ ํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ฐ๋จํ ์ปจํธ๋กค์ ํผ์์ WinUI 3.0์ผ๋ก ์ ๊ทธ๋ ์ด๋ํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
WinUI 3์์ UWP Xaml ๊ตฌ์ฑ ์์๋ฅผ ์ฌ์ฉํ๋ ๋ฐ ์ ํธํ๋ ์๋ฃจ์ ์ ๋ฌด์์ ๋๊น?
The fastest path to releasing WinUI 3.0 would be to not support mixing [...]
. ๋๋ ๋ชจ๋ ๊ธฐ๋ณธ ์ปจํธ๋กค์ ์ป๋ ํ ๊ทธ๋ฌํ ์๋ฃจ์
์ ์ ๋์ ์ผ๋ก ์ ํธํฉ๋๋ค. Windows.UI์ ๋ชจ๋ ํด๋์ค๊ฐ Microsoft.UI ๋ค์์คํ์ด์ค์ ๋๋ฑํ ํด๋์ค๋ฅผ ๊ฐ์ง ๊ฒ์ผ๋ก ์์ํฉ๋๋ค.
WinUI 3.0์ ์ฃผ์ ์ฃผ์ ๋ ์ปจํธ๋กค๊ณผ Windows 10 ํธํ์ฑ์ ๊ดํ ๊ฒ์ด์์ต๋๋ค. ์ด ํธํ์ฑ์ ์ ๊ฐ ๋ง๋ค๋ฉด XAML Island๋ฅผ ํตํด UWP ๋ฐ WPF ๋๋ WinForms์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. UWP XAML ๋งํฌ์ ์ ์ถ๊ฐ ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋ ๊ฐ๋ฅ์ฑ์ด ์์ต๋๊น?
Windows.UI.Xaml.Controls
์ปจํธ๋กค(TextBlock, Border,...)์ด ๋ด์ธ๋ ๊ฒ์ผ๋ก ์ ์ธ ์ ๋ WinUI 3.0๊ณผ ์ด์ ๋ฒ์ ๊ณผ์ ํธํ์ฑ์ ์ ๋ง ๊ธฐ๋ํ๊ณ ์์ต๋๋ค!
F#์ WinUI 3.0 ๋ก๋๋งต์์ ๋ฌด์๋ฉ๋๋ค.
UWP XAML ๋งํฌ์ ์ ์ถ๊ฐ ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋ ๊ฐ๋ฅ์ฑ์ด ์์ต๋๊น?
@Happypig375 , @mfe-:
๋ก๋๋งต์ ์ด๊ธฐ 3.0 ๋ฆด๋ฆฌ์ค๋ง ๋ค๋ฃจ๋ฉฐ ์ด๊ธฐ ๋ฆด๋ฆฌ์ค์์๋ ์์์ ์๋ก์ด ๊ธฐ๋ฅ๊ณผ ํจ๊ป ๊ธฐ์กด ๊ธฐ๋ฅ์ ๋ํ ํจ๋ฆฌํฐ ๋ฐ ์ด์ ๋ฒ์ ๊ณผ์ ํธํ์ฑ์ ์ฃผ๋ก ์ค์ ์ ๋ก๋๋ค.
๋ ๋์ F# ์ง์์ด๋ ์๋ก์ด ๋งํฌ์ ๊ธฐ๋ฅ๊ณผ ๊ฐ์ ๋ค๋ฅธ ์๋ก์ด ๊ธฐ๋ฅ์ด ์ค์ํ๋ค๊ณ ์๊ฐ ๋๋ฉด ์ ๊ธฐ๋ฅ ์์ฒญ์ ์ด์ด ๋ณ๋๋ก ์ถ์ ํ ์ ์๋๋ก ํ์ญ์์ค!
๋งค์ด Windows.UI.Xaml.Controls ์ปจํธ๋กค(TextBlock, Border,...)์ด ๋ด์ธ๋ ๊ฒ์ผ๋ก ์ ์ธ๋๋ ์ด์ ๋ ๋ฌด์์ ๋๊น? UWP๊ฐ ์๋ WinUI 3.0์์๋ ์ด ์์ ์ ์ํํ์ง ๋ง์ญ์์ค.
์ ๊ธ ํด์ ์ปจํธ๋กค์ ์ค์ ๋ก 3.0์ ํฌํจ๋๊ธฐ๋ฅผ ํฌ๋งํ๋ ์์์ ์๋ก์ด ๊ธฐ๋ฅ ์ค ํ๋์ ๋๋ค ๐
์ธ์ด์ ๊ด๋ จํ์ฌ ํผํฉ ๋ฐ ์ผ์นํ๋ ๊ฒ์ด ๊น๋ํ ๊ฒ์ ๋๋ค(ํจํค์ง ์ ์ ๋ชจ๋ ๊ฒ์ด ์ปดํ์ผ๋๋ฉด ๊ด์ฐฎ์ ๊ฒ์ ๋๋ค).
์ผ๋ถ ๋ฐฑ์๋ ๋ ผ๋ฆฌ์ ์ฌ์ฉ๋๋ F# - ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ ๋ฐ UI ์ฝ๋๋ฅผ ์ํ C# - ์ปจํธ๋กค์ ์ํ C++ ๋ฐ ์ผ๋ถ ์ ๊ฐ Win32 ํํฌ ๋๋ WinForms ๋ํ ์์๋ฅผ ์์ํ๋ ๋ฐ๋ ์ฌ์ฉ๋ฉ๋๋ค.
๋ชจ๋ ์ฝ๋ ์ธ์ด๋ ๋์ผํ๊ณ ์ํธ ๊ตํ ๊ฐ๋ฅํ๋ฉฐ WinUI 3.0์ด ๋ชจ๋ UI๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค.
xlang์ ๋๋ค ๐
xlang์ ๋๋ค ๐
@MarkIngramUK ํ , ๋จ์ผ ํ๋ก์ ํธ์์ ์ฌ๋ฌ ์ธ์ด์ ์ฝ๋ ํ์ผ์ ํ์ฉํ๋ ๊ฒ์ด ์๋๋ผ ๊ฐ ์ธ์ด๋ฅผ ์ถ์ํํ๋ ์ธ์ด ๊ฐ์ ๋ค๋ฆฌ๋ผ๊ณ ์๊ฐํ์ต๋๋ค.
๋๋ xlang์ ๋ชฉ์ ์ ์ดํดํ๊ธฐ ์ํด ๊ณ ๊ตฐ๋ถํฌํ์ต๋๋ค - ๋ฆฌํฌ์งํ ๋ฆฌ์์ ์ผ์ด๋ ์ ๋ฐ์ดํธ์ ๋ํด ์ค๋ช ํฉ๋๋ค(๊ทธ๋ฌ๋ ์ฌ์ ํ ๋ด ๊ฐ์ ๋ชฉ๋ก์ ์์ต๋๋ค)
xlang์ ์ปดํ์ผ ์ ์ด๋ ํ์ ์๋ํฉ๋๊น? ํฌ์๋ ์ ์๋ ์์ฒด ์ถ์ ์ธ์ด์ ๋๊น, ์๋๋ฉด ๊ธฐ์กด ์ฝ๋ ํ์ผ ์ฌ์ด์ ์์นํฉ๋๊น?
์, ๋จ์ผ ํ๋ก์ ํธ์์ ์ธ์ด๋ฅผ ํผํฉํ ์ ์์ต๋๋ค. ๊ทธ๊ฒ์ ๋ค๋ฆฌ์ด์ง๋ง ์ฌ์ ํ ๊ทธ๋ฌํ ๋ชฉ์ ์ ์ ์ฉํฉ๋๋ค.
@MarkIngramUK ์ปดํ์ผํ ์ ์๋ ์ฝ๋๊ฐ ํฌํจ๋ ๊ฒฝ์ฐ ๊ทธ๋ ๊ฒ ์๊ฐํฉ๋๋ค.
PInvoke ๋ฐ ๊ธฐํ .NET ํธ๋ฆญ ์์ด C#์ ์ฌ์ฉํ์ฌ ๊ธฐ๋ณธ Win32 ๊ธฐ๋ฅ์ ์ก์ธ์คํ ์ ์๋ค๋ฉด ์ข์ ๊ฒ์ ๋๋ค.
@jesbis ์์งํ ์ด ํ๋ก์ ํธ์ ํฌ๋ก์ค ํ๋ซํผ ์ธก๋ฉด์ ๋ ๊ด์ฌ์ด ์์ต๋๋ค...
์ฒ์์๋ "Windows"๊ฐ ์๋ ์ข ๋ _์ผ๋ฐ์ ์ธ_ ์ด๋ฆ์ผ๋ก ์ด๋ฆ์ ๋ฐ๊ฟ์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ด๊ธฐ ๊ตฌํ์ Win32์ UWP/Xamarin ์ฑ ๋ฐ Windows์ ์๊ฒฉํ๊ฒ ์ด์ ์ ๋ง์ถฐ์ผ ํ์ง๋ง OSS๋ง ์ฌ์ฉํ๊ณ ์ฒ์๋ถํฐ "Windows ์ ์ฉ" ํ๋ ์์ํฌ์ฒ๋ผ ํธ์ถํ๋๋ก ํ๋ฉด UWP์ ๊ฐ์ ๊ฒฌ์ธ๋ ฅ์ ์ป์ง ๋ชปํ ๊ฒ์ ๋๋ค. ๊ทธ๋ ์ง ์์์ผ๋ฉฐ ๋ค๋ฅธ ํ๋ซํผ์ ๊ฐ๋ฐ์๋ ๊ฒฐ์ฝ ๊ทธ๊ฒ์ ๊ด์ฌ์ ๊ฐ์ง ์์ ๊ฒ์ ๋๋ค.
.Net 5์ ๋ชฉํ๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก .Net 1.0 ์ดํ๋ก ๋ชจ๋ ์ฌ๋๋ค์ด ํญ์ ๊ธฐ๋ํ๋ "One .Net Everywhere"๊ฐ ๋๋ ๊ฒ์ด๋ผ๋ฉด "Anything but Win UI" ํ๋ ์์ํฌ์ ๊ธฐ๋ฐ์ด ๊ต์ฐจ ํ๋ซํผ์์ ์์๋์ด์ผ ํฉ๋๋ค.
์ฌ๋ฐ๋ฅด๊ฒ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ฃผ ์ข์ ์๋ Google Flutter์ ๋๋ค. Flutter๋ ์ด๊ธฐ ๋จ๊ณ์ ์์ง๋ง ํต์ฌ(์ผ๋ช Flutter Engine)์ด 100% ํฌ๋ก์ค ํ๋ซํผ์ด๊ณ ๋ชจ๋ ๊ณณ(IoT, Win, OSX, ์ด์ ๋ ์น ํฌํจ!)์์ ์๋ํ๋ค๋ ์ฌ์ค ๋๋ฌธ์ ๋ง์ ๊ด์ฌ์ ๋ฐ์์ต๋๋ค.
๊ทธ๊ฒ์ ๋ฐ๋ก ๋ด 2c์ ๋๋ค. Xaml ์์ ์ผ๋ก ๋์๊ฐ๊ณ ์ถ์ง๋ง UWP์์์ ๊ฐ์ ์ค์ ๊ณ์ ์ ์งํ๋ฉด ์ฌ๋ฐ๋ฅธ ๊ฒฌ์ธ๋ ฅ์ ์ป์ง ๋ชปํ๊ณ ๊ฒฐ๊ตญ ๋ค๋ฅธ ์๋๊ฐ ํ์ํ WPF๋ฅผ ๋ค์ ์์ฑํ๋ ค๋ ๋ ๋ค๋ฅธ ์๋๊ฐ ๋ ๊ฒ์ ๋๋ค. ๋ฏธ๋ ๋ฑ๋ฑ.
์ ๋ฅผ ํ๋๊ฒํ์ง ๋ง์๊ณ ์ ์๊ฒฌ์ ๋์ ๋นํ์ผ๋ก ๋ฐ์๋ค์ด์ง ๋ง์ญ์์ค. .Net ์ธ๊ณ์ UI์ ๋ํ ๋ ธ๋ ฅ์ด Flutter, .Net Core 3.0/.Net 5, ์ฌ์ง์ด Blazor์ ๊ฐ์ ๊ฒ์ ์ป๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
์ฐธ๊ณ ๋ก ์ ๋ .Net World์ ์ต์ ์ด ์๊ธฐ ๋๋ฌธ์ C# ๋ฐ .Net Core์์ Flutter ์์ง์ ์์ ํ ์ฌ์์ฑ/ํฌํ ํ๋ ํ๋ก์ ํธ๋ฅผ ์์ํ์ต๋๋ค...
์, CoreUI
๋ ์ข์ ์ด๋ฆ์
๋๋ค...
๊ทธ ์ ์์ ๋ํด Jake Helfert์๊ฒ ๊ฒฝ์๋ฅผ ํํฉ๋๋ค ๐
๐
์,
CoreUI
๋ ์ข์ ์ด๋ฆ์ ๋๋ค...๊ทธ ์ ์์ ๋ํด Jake Helfert์๊ฒ ๊ฒฝ์๋ฅผ ํํฉ๋๋ค ๐
๐
CoreUI๊ฐ .NET Core์ ํผ๋๋ ์ ์์
WinUI๋ Windows์ ๋งค์ฐ ์ค์ ์ ๋๊ณ ์์ง๋ง ๊ทธ ์์ ์๋ XAML ํ๋ ์์ํฌ๋ Metal(iOS ๋ฐ macOS) ๋๋ Vulkan(Android)์ฉ ๋ ๋๋ฌ๋ฅผ ์ป์ ์ ์์ผ๋ฉฐ FabricWeb์ ๋ค๋ฅธ ํ๋ซํผ์ ์ฒ๋ฆฌํ๋ PWA/ChromeOS ๋ฐฉ์์ด ๋ ์ ์์ต๋๋ค.
ํ์ด ํ๋ ์ ํ ์ด์ ํ๋ซํผ์ ๊ฐ์ ธ์ค๊ธฐ๋ก ์ ํํ๊ณ Xland ๋๋ Xamarin์ด ํ๋ซํผ ๊ฐ ์ฑ์ ๋ฐํ์์ ์ฒ๋ฆฌํ ์ ์๋ค๋ฉด.
๋ฐ์ ํธ์งํจ UWP UI์์ WinUI 3.0์ผ๋ก์ ๋ง์ด๊ทธ๋ ์ด์ ์ ๋ํด @dotMorten ( https://www.sharpgis.net/post/2019/05/14/The-future-UWP )์ ์ต๊ทผ ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ์ ์ธ์ฉ
์ฌ๋ฏธ์๋ ์์ : UWP์ ์ผ์ด๋๊ณ ์๋ ์ผ์ ๊ทธ๊ฒ์ด ์ฃฝ๊ณ ์๋ค๋ ๊ฒ์ด ์๋๋๋ค. Microsoft๋ ์ต๊ณ ์ ๋ถํ์ ์ฐ๋ฆฌ๊ฐ ํ์๋ก ํ๋ ๊ณณ์ผ๋ก ๊ฐ์ ธ์ค๊ธฐ ์ํด ์ ํํ๊ณ ์์ต๋๋ค. ์ด๊ฒ์ ์ค์ ๋ก ์ด์ ์ ๋ฐ์ํ์ง๋ง ๋ถํํ๋ ํผ๋ฒ์ ์ํํ ๊ธฐํ๋ก ์ฌ์ฉ๋์ง ์์์ต๋๋ค. ์ค๋ฒ๋ผ์ดํธ๋ฅผ ๊ธฐ์ตํ์๋์? .NET Core์ ํ๋ซํผ ๊ฐ CLR์ด ์ด๋์์ ์๋์ง ๋ง์ถฐ๋ณด์ธ์. ๊ทธ๋ฆฌ๊ณ Silverlight์ ๋ง์ ์ฝ๋๋ UWP์ ํฌํจ๋์์ต๋๋ค. ๊ทธ๋ค์ด ํผ๋ฒํ๊ณ "์, Silverlight๊ฐ ์๋น์์ฉ ์ ํ์๋ ์ ํฉํ์ง ์๋ค๋ ๋ฐ ๋์ํ์ง๋ง ์ํฐํ๋ผ์ด์ฆ ์์ญ์์๋ ๋ฒ์ฐฝํ๊ณ ์์ผ๋ฏ๋ก ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ถํ๊ณ .NET Core ๋ฐ Windows Store๋ก ๋ฐ์ ์ํฌ ๊ฒ์ ๋๋ค."๋ผ๊ณ ๋งํ์ต๋๋ค. ๋ถํํ๋ ๊ทธ๊ฒ์ ์์กฐ๋กญ๊ฒ ์งํ๋์ง ์์์ผ๋ฉฐ ๋ง์ ์ฌ๋๋ค์ด ์ฌ์ ํ PTSD๋ก ๊ณ ํต ๋ฐ๊ณ ์์ผ๋ฉฐ Microsoft๊ฐ ๋ชจ๋ ๊ธฐ์ ์ ์ฃฝ์ด๋ ๊ฒ์ผ๋ก ๋ณด์ด๋ ๋ชจ๋ ์กฐ์น๋ฅผ ๊ฒฝ๊ณํฉ๋๋ค.
๊ฐ๋ฐ์์ ์ฝ๋๋ฒ ์ด์ค์ ์ข์ ๋ฐฉํฅ์ ์ ์ํ์ง ์๊ณ ๊ธฐ์กด ํ๋ ์์ํฌ๋ฅผ ์ข ๋ฃํ๊ฑฐ๋ ์ฌ์ค์ ํ๋ ๊ฒ์ผ๋ก ์ธ์๋๋ ๊ฒ์ ๊ธฐ์กด ํ๋ ์์ํฌ์ ๊ฐ๋ฐ์์๊ฒ๋ง ์ํฅ์ ๋ฏธ์น๋ ๊ฒ์ด ์๋๋ผ ๋ชจ๋ ์ฌ๋๋ค์ด ์ ์๋ก์ด ๊ฒ์ ๊ทธ๋ฅ ๊ฐ์ ์ด๋ช ์ ๋ง์ดํ์ง ์์ต๋๋ค. ์ด๊ฒ์ ํน์ ์ ์๋ ๋ง์ด๊ทธ๋ ์ด์ ์ ๊ทผ ๋ฐฉ์์ ๋ํ ์ธ๊ธ์ด ์๋๋ผ ๊ธฐ์กด ๋ฐ์ ํธ์งํจ UI ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ๋ ์ฌ๋์ด ๋ง์ง ์๊ธฐ ๋๋ฌธ์ ๋ง์ด๊ทธ๋ ์ด์ ์ด ์ค์ํ์ง ์๋ค๋ ์๊ฒฌ์ ๋ํ ์๋ต์ ๋๋ค. ๊ณ ๋ ค ์ฌํญ์ ์ด๋ฟ๋ง์ด ์๋๋๋ค!
@weitzhandler WinUI 3.0์ ๋ค์ํ Win32, .NET Core ๋ฐ UWP ํ๋ ์์ํฌ๋ฅผ ๋จ์ผ XAML ํ๋ ์์ํฌ์ ๊ฒฐํฉํ๊ณ WPF, WinForms ๋ฐ MFC++์์ ์ํธ ์ด์ฉ์ ๊ดํ ๊ฒ์ ๋๋ค.
Windows์ XAML์ Direct X๋ก ๋ ๋๋ง๋ฉ๋๋ค.
๋์ผํ XAML์ .NET Core์ ๊ฒฐํฉํ์ฌ ๋ค๋ฅธ ํ๋ซํผ์์ ์๋ํ๋๋ก ํ๋ ค๋ ๊ฒฝ์ฐ. ํด๋น ํ๋ซํผ์ ๋ํ ์ ๋ ๋๋ฌ๋ฅผ ์์ฑํด์ผ ํฉ๋๋ค. iOS ๋ฐ macOS๋ Metal์ Direct X์ ์์ํ๋ ๊ฒ์ผ๋ก ์ฌ์ฉํฉ๋๋ค. ์๋๋ก์ด๋๋ Vulkan์ ์ฌ์ฉํฉ๋๋ค. Linux๊ฐ ๋ ๋๋ง์ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ๋์ง ์ ํ ๋ชจ๋ฅด์ง๋ง Open GL์ผ ๋ฟ์ ๋๋ค.
๋ง์ดํฌ๋ก์ํํธ๋ ๊ทธ๊ฒ์ด ์ดํด๊ฐ ๋์ง ์๊ธฐ ๋๋ฌธ์ ์ค์ค๋ก ๊ทธ๋ ๊ฒ ํ๊ณ ์ถ์ง ์์ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ WinUI 3.0์ ์คํ ์์ค๊ฐ ๋ ๊ฒ์ด๋ฏ๋ก ๋ค๋ฅธ ์ฌ๋๋ค์ด ํ๋ซํผ ๊ฐ์ ๊ฐ์ ธ์ค๋๋ก ์ ํํ ์ ์์ต๋๋ค.
@mdtauk
ํด๋ช ํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. Flutter๋ ์๋ง๋ ์ ๋ฏธ๋์ผ ๊ฒ์ ๋๋ค.
๊ทธ๊ฑด ์ ์ดํด์ผ ๋ฟ์ ๋๋ค. ์ ๊ฐ ์คํดํ ์๋ ์์ต๋๋ค.
Flutter๋ ํฅํ Windows ์ง์์ ๋ฐ์ ์์ ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ React Native ์ง์์ Windows์๋ ์ ๊ณต๋ฉ๋๋ค. ๋ํ ์น HTML ๋ฐ Javascript ์ธ๊ณ์ ํฌ์ํ๋ค๋ฉด PWA๊ฐ ์์ต๋๋ค.
๋์๊ฒ ์ ์ฒด WinUI ์ด์ผ๊ธฐ๋ ์น์ ํฌํจํ์ฌ ํ๋ซํผ ๊ฐ(macOS, iOS, Android)์์ ์คํ๋๋ ๊ธฐ๋ณธ ํ์ ์งํฉ์ ๊ณ ๋ คํ๊ณ ๋ ๋์ F# ์ง์ ๋ฐ ํ๋ก์ ํธ ํ ํ๋ฆฟ(ํฌํจ F# ๋ ์ฝ๋์ ๋ํ XAML ์๋ฐฉํฅ ๋ฐ์ธ๋ฉ ๋ฐ ๋์ฑ ๊ธฐ๋ฅ์ ์ธ Elmish ๋ฐฉ์)
XAML์ HTML ์ด HTML ์ฑ์ฒ๋ผ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๋๊ตฌ ์ฑ์๋ 100mb ์ด์์ ์ฌ์ฉํ์ง ๊ฒ์ ์์ง์ด ์์ํ๋ ๋ฐ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๊ฐ์ ๋ถ๊ฐ์ง๋ก ์ ๋ ๋๋ง ๋ฐฑ์๋๊ฐ ํ์ํฉ๋๋ค.
์ด UWP์ ์ด์ ์ ๋ง์ถ XAML์ด XAML๊ณผ ํจ๊ป ๋ช ๋ ๋์ ์ ํ์ฌ๋ ์ ๊ฐ ๊ฐ์ธ์ ์ผ๋ก ๊ฒช์๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ ์๋ค๋ฉด ์์ต๋๋ค. TBH MS๋ UI์ ๋ํด ์์ ํ ์๋ชป๋ ๋ฐฉํฅ์ผ๋ก ๊ฐ๊ณ ์์ผ๋ฉฐ ๋น ๋ฅด๊ฒ ์งํ๋์ง ์์ต๋๋ค(๋ง์ ์ฌ๋๋ค์๊ฒ ๊ท์คํ ์๊ฐ์ ๋ง์ด ๋ญ๋นํฉ๋๋ค). ์ด UWP XAML ํด์ปค๋ ๋ด๊ฐ ๋ณด์ฌ ์ฃผ๋ ์ฌ๋๋ค์๊ฒ ์ ์ด์ธ๋ฆฌ์ง ์์ต๋๋ค... ์ด๋ XAML ์ฑํ์ ๋ํ ๋์๋ ๋ฐ๋ฐ์ ์๋ฏธํ๊ธฐ ๋๋ฌธ์ ์ฌํ๊ณ ์ด ์์ ์์ ๋ ์ด์ ๋ ผ์ํ ์ฌ์ง๊ฐ ์์ต๋๋ค.
๋ด ์๊ฒฌ์ผ๋ก๋ XAML์ ์ ์ฅํ๋ ์ ์ผํ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๊ฐ๋จํ ๋งํด์ XAML ์ ์์ด ์ ์ธ๋๊ธฐ ์ ์ ํ๋๋ก ๊ฒฐํฉ๋์ด์ผ ํ๋ ๋ ๊ฐ์ง ์กฐ๊ฑด์ด ์์ต๋๋ค.
์ด์จ๋ ๋ด 2์ผํธ์ด๊ณ WinUI 3.0์ด ์ฌ๋ฐ๋ฅด๊ฒ ์ค๊ณ๋์๋ค๋ฉด ์ด์์ด ๊ฐ๋ฅํ ๊ฒ์ ๋๋ค. ์ด ์์ ์์ idk ๋ฌด์์ ๋๊ปด์ผ ํฉ๋๋ค.
์ฌ๊ธฐ์ ํฌ๋ก์ค ํ๋ซํผ์ ๋ํ ๋ช ๊ฐ์ง ์๊ฒฌ์ด ์์ผ๋ฉฐ WinUI๊ฐ ์ฑ๊ณตํ๋ ค๋ฉด ํฌ๋ก์ค ํ๋ซํผ์ด ํ์ํ๋ค๊ณ ํ์ ํ ์ ์์ต๋๋ค. ์ด์จ๋ Mac์ด๋ Linux์์๋ ์ ์๋ํ์ง ์์ ๊ฒ์ ๋๋ค. ์๋ํ๋ฉด ๋ ํ๋ซํผ ์ค ํ๋์์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋๊ปด์ง์ง ์์ ๋งํผ ์ถฉ๋ถํ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ด ํ๋ก์ ํธ๋ Windows ๋ด๋ถ๊ฐ ์ด๋ป๊ฒ ์๋ํ๋์ง์ ๋ํ ํ๋ถํ ์ง์์ ๊ฐ์ง ํ์ด ์์ ํ๊ณ ์์ผ๋ฉฐ Mac ๋๋ Linux์์ ๋์ผํ ์ ๋๋ก ์ ๋๋ก ์๋ํ๋๋ก ํ๋ ๋ฐฉ๋ฒ์ ์์๋ด๋ ๊ฒ์ ๊ทธ๋ค์ด ์ฃผ์๋ฅผ ์ฐ๋งํ๊ฒ ํ ๊ฒ์ ๋๋ค.
๋ํ... Fluent on Mac์ ํฌ๋ฐํ๊ฒ ๋๊ปด์ง ๊ฒ์ ๋๋ค. iTunes๋ฅผ ๋ณด๋ฉด Apple์ ์ ์ฒด UI ์์คํ ์ Windows๋ก ์ด์ํด์ผ ํ๊ณ ํ์คํ ๋ถ์ ์ ํ๊ฒ ๋๊ปด์ก์ต๋๋ค. ๊ธ๊ผด ๋ ๋๋ง์ ๋ค๋ฅด๋ฉฐ ์ ๋๋ฉ์ด์ ๊ณก์ ๊ณผ ๊ทธ๋ฆผ์ ๋ฐ ์์ ์ ํ์ Win10์์ ๋๋ฌด ๋ถ์ ์ ํ๊ฒ ๋๊ปด์ง๋๋ค. ๋ด ๋ง์, ๊ทธ๊ฒ์ ๊ด์ฐฎ๊ณ ์ฌ์ฉ ๊ฐ๋ฅํ์ง๋ง ๋ฐ์คํฌํ UI๋ฅผ ์๋ฎฌ๋ ์ดํธํ์ง ์๊ณ ํ๋ ์๋์์ ์น ๋ธ๋ผ์ฐ์ ๋ฅผ ์ฌ์ฉํ๋ Spotify๋ฅผ ์ ํธํฉ๋๋ค. Mac์์๋ ๋ชจ์๋ฆฌ๊ฐ ๋ฅ๊ธ๊ณ ํ์ ํจ๊ณผ๊ฐ ์๋ ๋ฐ์คํฌํ์์ ์ ์ฌ๊ฐํ ๊ตฌ์ฑ ์์๊ฐ ์๋ ํ์ ์คํฌํธ๋ผ์ดํธ๋ฅผ ๋ณด๋ ๊ฒ์ด ๋๋ฌด ํ๋ค ๊ฒ์ ๋๋ค.
์๋์, ์ด ํ๋ก์ ํธ๋ Windows ์ํํธ์จ์ด๋ฅผ ๊ตฌ์ถํ๋ ค๋/ํ์ํ ๊ฐ๋ฐ์๋ฅผ ์ํด ๊ธฐ๋ณธ Windows ์ํํธ์จ์ด๋ฅผ ๋ง๋๋ ๋๊ธ ์ต๊ณ ์ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ ๋ฐ ์ค์ ์ ๋์ด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ํฌ๋ก์ค ํ๋ซํผ ๋ฌธ์ ๋ Electron/Typescript ํ์ ๋งก๊ฒจ ํด๊ฒฐํ์ธ์.
์ฌ๊ธฐ์ ํฌ๋ก์ค ํ๋ซํผ์ ๋ํ ๋ช ๊ฐ์ง ์๊ฒฌ์ด ์์ผ๋ฉฐ WinUI๊ฐ ์ฑ๊ณตํ๋ ค๋ฉด ํฌ๋ก์ค ํ๋ซํผ์ด ํ์ํ๋ค๊ณ ํ์ ํ ์ ์์ต๋๋ค. ์ด์จ๋ Mac์ด๋ Linux์์๋ ์ ์๋ํ์ง ์์ ๊ฒ์ ๋๋ค. ์๋ํ๋ฉด ๋ ํ๋ซํผ ์ค ํ๋์์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋๊ปด์ง์ง ์์ ๋งํผ ์ถฉ๋ถํ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ด ํ๋ก์ ํธ๋ Windows ๋ด๋ถ๊ฐ ์ด๋ป๊ฒ ์๋ํ๋์ง์ ๋ํ ํ๋ถํ ์ง์์ ๊ฐ์ง ํ์ด ์์ ํ๊ณ ์์ผ๋ฉฐ Mac ๋๋ Linux์์ ๋์ผํ ์ ๋๋ก ์ ๋๋ก ์๋ํ๋๋ก ํ๋ ๋ฐฉ๋ฒ์ ์์๋ด๋ ๊ฒ์ ๊ทธ๋ค์ด ์ฃผ์๋ฅผ ์ฐ๋งํ๊ฒ ํ ๊ฒ์ ๋๋ค.
๋ํ... Fluent on Mac์ ํฌ๋ฐํ๊ฒ ๋๊ปด์ง ๊ฒ์ ๋๋ค. iTunes๋ฅผ ๋ณด๋ฉด Apple์ ์ ์ฒด UI ์์คํ ์ Windows๋ก ์ด์ํด์ผ ํ๊ณ ํ์คํ ๋ถ์ ์ ํ๊ฒ ๋๊ปด์ก์ต๋๋ค. ๊ธ๊ผด ๋ ๋๋ง์ ๋ค๋ฅด๋ฉฐ ์ ๋๋ฉ์ด์ ๊ณก์ ๊ณผ ๊ทธ๋ฆผ์ ๋ฐ ์์ ์ ํ์ Win10์์ ๋๋ฌด ๋ถ์ ์ ํ๊ฒ ๋๊ปด์ง๋๋ค. ๋ด ๋ง์, ๊ทธ๊ฒ์ ๊ด์ฐฎ๊ณ ์ฌ์ฉ ๊ฐ๋ฅํ์ง๋ง ๋ฐ์คํฌํ UI๋ฅผ ์๋ฎฌ๋ ์ดํธํ์ง ์๊ณ ํ๋ ์๋์์ ์น ๋ธ๋ผ์ฐ์ ๋ฅผ ์ฌ์ฉํ๋ Spotify๋ฅผ ์ ํธํฉ๋๋ค. Mac์์๋ ๋ชจ์๋ฆฌ๊ฐ ๋ฅ๊ธ๊ณ ํ์ ํจ๊ณผ๊ฐ ์๋ ๋ฐ์คํฌํ์์ ์ ์ฌ๊ฐํ ๊ตฌ์ฑ ์์๊ฐ ์๋ ํ์ ์คํฌํธ๋ผ์ดํธ๋ฅผ ๋ณด๋ ๊ฒ์ด ๋๋ฌด ํ๋ค ๊ฒ์ ๋๋ค.
์๋์, ์ด ํ๋ก์ ํธ๋ Windows ์ํํธ์จ์ด๋ฅผ ๊ตฌ์ถํ๋ ค๋/ํ์ํ ๊ฐ๋ฐ์๋ฅผ ์ํด ๊ธฐ๋ณธ Windows ์ํํธ์จ์ด๋ฅผ ๋ง๋๋ ๋๊ธ ์ต๊ณ ์ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ ๋ฐ ์ค์ ์ ๋์ด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ํฌ๋ก์ค ํ๋ซํผ ๋ฌธ์ ๋ Electron/Typescript ํ์ ๋งก๊ฒจ ํด๊ฒฐํ์ธ์.
๋ค๋ฅธ ํ๋ซํผ์์ ์์ ํ Fluent ๋์์ธ์ ์ํ๋ ์ฌ๋์ ์๋ฌด๋ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์คํ๋ ค ํ๋ซํผ ๊ฐ์ ๊ณตํต ์ฝ๋๋ฅผ ์ต๋ํํ ์ ์๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
์ด๊ฒ์ Microsoft ๋์์ธ ํ์์ ์ด๋ฏธ ํด๊ฒฐํ ๋ฌธ์ ์
๋๋ค. Fluent ์น์ฌ์ดํธ๋ "๊ธฐ๋ณธ์ ์ผ๋ก iOS์ด๋ฉด์ ์ฌ์ ํ ๊ณ ์ ํ Fluent์ธ ๋ง์ถคํ ์ฑ์ ๋์์ธํ๊ณ ๋น๋ํฉ๋๋ค"๋ผ๊ณ ๋ช
์์ ์ผ๋ก ๋งํฉ๋๋ค. Fluent ๋ฌธ์๋ ๊ธฐ๋ณธ ์ปจํธ๋กค ์คํ์ผ์ ์ฌ์ฉํด์ผ ํจ์ ๋ณด์ฌ์ค๋๋ค.
https://www.microsoft.com/design/fluent/#/ios
https://developer.microsoft.com/en-us/fabric#/controls/ios/button
ํผํด์ผ ํ ๊ฒ์ ๊ฐ ํ๋ซํผ์ ๋ํด ์์ ํ ๋ณ๋์ UI๋ฅผ ์ค๊ณํ๊ณ ์ ์ง ๊ด๋ฆฌํด์ผ ํ๋ ๊ฒ์ ๋๋ค. ์ฆ, ํ๋ฉด์ ์ผ๋ก ๋์ผํ๊ฒ ๋ณด์ผ ํ์๋ ์์ง๋ง ๊ณตํต ๋ ์ด์์์ ๊ณต์ ํด์ผ ํ๋ฉฐ UI ๋์์ด๋๋ ๊ฐ๋ฅํ ํ ๋ง์ด ์ฌ์ฌ์ฉํ ์ ์์ด์ผ ํฉ๋๋ค. ์ค์ ์คํ์ผ์ Windows 10 ์์คํ ์คํ์ผ๊ณผ ์ผ์นํ ํ์๊ฐ ์์ต๋๋ค.
๋ณธ์ง์ ์ผ๋ก ์ํ๋ ๊ฒ์ Fluent ๋์์ธ์ ๋ค๋ฅธ ํ๋ซํผ์ผ๋ก ๊ฐ์ ธ์ค๋ ๊ฒ์ด ์๋๋ผ ์ ์ฒด UI๋ฅผ ๋ค์ ๋ง๋ค ํ์ ์์ด ๋ค๋ฅธ ํ๋ซํผ์์ Windows ์ฑ์ ์ฝ๊ฒ ์คํํ ์ ์๋ ๋ฐฉ๋ฒ์ ๋๋ค. ๊ทธ๋ ๊ฒ ํ๋ฉด ์ฌ๋๋ค์ด ๋จผ์ Windows์ฉ์ผ๋ก ์์ฑํ ๋ค์ ๋ง์ ์์ ์์ด ์ฑ์ ๋ค๋ฅธ ํ๋ซํผ์ผ๋ก ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.
@KyleNanakdewa ๊ธ์, ๊ทธ๋ค์ด ๊ทธ๊ฒ์ ์คํ ์์ฑํ๋ค๋ฉด ์ผ๋ถ Xaml ํฌ์ด ๋ ๋ ๊ธฐ๋ณธ ํ๋ซํผ ๋นํธ๋ฅผ ๋ง๋ค๊ฒํ์ญ์์ค. ์๋ง๋ ์ํคํ ์ฒ๊ฐ ์ถฉ๋ถํ ๋ณต์กํ๊ณ Win32๋ฅผ ์ถฉ๋ถํ ํ์ฉํ์ฌ ํฌํธ๊ฐ ๋ง๋ํ ์ฌ์ ์ด ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
์ด ํ๋ก์ ํธ๋ ๊ธฐ๋ณธ Windows ์ํํธ์จ์ด๋ฅผ ๋ง๋ค๊ธฐ ์ํ ๋๊ธ ์ต๊ณ ์ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ ๋ฐ ์ค์ ์ ๋์ด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
Microsoft๊ฐ ์ด๋ฏธ WinUI์ ๋งค์ฐ ๋ค๋ฅธ XAML ๋ฐฉ์ธ์ ์ ๊ณตํ๋ ๊ธฐ์กด ํฌ๋ก์ค ํ๋ซํผ XAML ๋๊ตฌ ํคํธ๋ฅผ ์์ ํ์ง ์์ ๊ฒฝ์ฐ ์ด ์ฃผ์ฅ์ ์ค๋๋ ฅ์ด ์์ ์ ์์ต๋๋ค.
๋ํ ์น HTML ๋ฐ Javascript ์ธ๊ณ์ ํฌ์ํ๋ค๋ฉด PWA๊ฐ ์์ต๋๋ค.
๋ค... ๋ค์ดํฐ๋ธ OS/์คํ ์ด/ํธ์คํ ๊ฐ๋ฐ์ ๋ํด ์ฐ๋ฆฌ๊ฐ ์๊ณ ์๋ ๋ชจ๋ ๊ฒ์ ๋น ๋ฅด๊ฒ ๋์ฒดํ๋ "๊ทธ ์ธ๊ณ"์ ๋๋ค. ๐
https://onezero.medium.com/the-end-of-app-stores-is-rapidly-approaching-b972da395097
HTML5 ๋ ๋๋ฌ๊ฐ ์๋ _๋ชจ๋ _ ์ต์ ๊ธฐ๊ธฐ์ "๊ทธ ์ธ๊ณ"๊ฐ ์กด์ฌํ๋ค๊ณ ์๊ฐํด ๋ณด์ธ์.
์ด์ Windows์ ์์ฅ ์ ์ ์จ์ด ๊ฐ์ฅ ๋ฎ์์ ์ ์ ์์ต๋๋ค. ์ฆ, ์ด ํ๋ซํผ์ ํน๋ณํ ๋ง๋ ๋ชจ๋ ์ ํ์ ๊ฐ์ฅ ์์ ์์ฅ์ ๋๋ฌํ๋ ์ ํ์ด ๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ ๊ฒ ํ๋ฉด ์์ฉ ํ๋ก๊ทธ๋จ์ ์ต๋ ์ ์ฌ์ ์์ฅ ๋๋ฌ ๋ฒ์๊ฐ ์ค์ด๋ค๊ณ ๊ฒฐ๊ณผ์ ์ผ๋ก ์ต๋ ์ ์ฌ์ ์์ต ํ๋๊ฐ ๋ฎ์์ง๋๋ค.
์ด๊ฒ์ ์์ ์ธ๊ธํ ๋ง์ผ ํ๋ ์ด์ค์ _๋ชจ๋ _์ _ํ๋์_ ์ฝ๋๋ฒ ์ด์ค๋ก ๋๋ฌํ๋ Flutter ์ ์น ์ด 3๊ฐ์ง ๋ชจ๋์ ์งํฉ์ฒด๋ก ๊ตฌ์ฑ๋์ด ์๋ Flutter์ ๋น๊ตํ์ญ์์ค. ํ ์ ์์ต๋๋ค.
์ ๋ ์ฌ๊ธฐ์์ ์์ค๋ฅผ ๊ณต๊ฐํ๊ณ , ํ์ ํ๊ณ , ์ปค๋ฎค๋ํฐ ํผ๋๋ฐฑ์ ์์ฒญํ๋ ค๋ ๋ ธ๋ ฅ์ ์ด๋ ฌํ ํฌ ์ด์ง๋ง, ์ฌ๊ธฐ์์์ ๋ ธ๋ ฅ์ด ๋ ๊ฒ์ด๋ผ๋ ํ์ ์ ๊ฐ๊ณ ๋์๊ฒ ์ ํธ๋ฅผ ๋ณด๋ด๋ ์ด๋ฌํ ํ ๋ก (๋๋ ์ฆ๊น๋๋ค ๐)์ ์์ง ๋ณด์ง ๋ชปํ์ต๋๋ค. Flutter(btw ๋ PWA์ ์ ํฉํจ )์ ๋น๊ตํ ๋ ๊ฒฝ์๋ ฅ์ด ์์ผ๋ฏ๋ก _์์ต์ฑ ์๋_์ ๋๋ค.
๋ค์ด์ด๊ทธ๋จ ์ ์ด ๋ ๊ณง ๊ณต์ NET CORE 3(2019๋ 9์)๊ฐ ๋ ๋ชจ๋ ๋ฐ์ดํฐ ๊ธฐ๋ฐ ์ต์ ๋ฐ์คํฌํฑ ํ๊ฒฝ์์ ํ์์ ์ ๋๋ค. NET 5(2020๋ 11์)
์ ๊ณต๋ Networkview ์คํ ์์ค ์ปจํธ๋กค์ Xaml์ ์ฌ์ฉํ์ฌ WPF๋ฅผ Win UI ์ปจํธ๋กค๋ก ์ด์ํ๋ ๋ฐฉ๋ฒ์ ๋ํ ํจ๊ณผ์ ์ธ ์ฌ์ฉ ์ฌ๋ก๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ด ์ด์๋ Win UI๋ ๋ค๋ฅธ ์ฌ๋๋ค์ด ๋ค๋ฅธ ์ฝ๊ฐ ๋ ๋ณต์กํ WPF ์ปจํธ๋กค์ Win UI๋ก ์ด์ํ ์ ์๋ ์ข์ ๊ธธ๋ ์ญํ ์ ํฉ๋๋ค.
์ฑ์ด ํฅํ Windows Core OS์์ ํ๋ธ๋ฆฟ ๋ชจ๋๋ฅผ ์ง์ํด์ผ ํ๋ 2 in 1 ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๋ด ๋๋ค. ์ฐ๋ฆฌ๋ NET Core 3์ Winform์ด ๋์์ด ๋์ง ์์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. Win UI ๋ค์ด์ด๊ทธ๋จ ์ปจํธ๋กค์ด PoC์ ์ฐ์ต์ด ์๋๋ผ ์์ผ๋ก ์ด๋ํ๋ Grid ์ปจํธ๋กค๊ณผ ์ ์ฌํ FIRST ํด๋์ค์ win ui ํต์ฌ ์ปจํธ๋กค์ ์ผ๋ถ์ฌ์ผ ํ๋ ๋ ๋ค๋ฅธ ๊ฐ๋ ฅํ ์ ๋นํ์ ๋๋ค.
๋ ๋์ F# ์ง์์ด๋ ์๋ก์ด ๋งํฌ์ ๊ธฐ๋ฅ๊ณผ ๊ฐ์ ๋ค๋ฅธ ์๋ก์ด ๊ธฐ๋ฅ์ด ์ค์ํ๋ค๊ณ ์๊ฐ ๋๋ฉด ์ ๊ธฐ๋ฅ ์์ฒญ์ ์ด์ด ๋ณ๋๋ก ์ถ์ ํ ์ ์๋๋ก ํ์ญ์์ค!
@migueldeicaza ๊ฐ ์ค์ค๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ ์๋ ๊ฒ ๊ฐ์ต๋๋ค: https://github.com/microsoft/microsoft-ui-xaml/pull/736
ํฌ๋ก์ค ํ๋ซํผ์ ๋ํ @eklipse2k8 ์ ์๊ฐ์ ๋ฐ์ํ๊ณ ์ถ์ต๋๋ค. ํฌ๋ก์ค ํ๋ซํผ UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ง๋ค ๋๋ ํญ์ ํํ์ ํด์ผ ํฉ๋๋ค. WinUI๋ ํํํด์๋ ์ ๋ฉ๋๋ค. Win32 UI๋ฅผ ํ๋์ ์ผ๋ก ๋์ฒดํด์ผ ํ๋ฉฐ(๋ ์ด์ CreateWindowExW
ํธ์ถํ๊ณ ์ถ์ง ์์ต๋๋ค!) Windows์์ ์ํํ ์ ์๋ ์์
์ ์ผ์ผ์ด์ค๊ฐ ๋์ด์ผ ํฉ๋๋ค. macOS ๋๋ Android์ WinUI๋ ํญ์ ๊ธฐ๋ณธ ๊ฒฝํ๊ณผ ์ผ์นํ ์ ์๋ ๊ฒฝํ์ ์ ๊ณตํฉ๋๋ค. ์ฐ๋ฆฌ๋ ํฌ๋ก์ค ํ๋ซํผ ์ ํ๋ฆฌ์ผ์ด์
์ ์์ฑํ๊ณ ๊ฐ ํ๋ซํผ์ ๊ธฐ๋ณธ UI๋ฅผ ์์ฑํฉ๋๋ค. ๊ทธ๋ ๊ฒ ํ๋ฉด ๊ณ ๊ฐ์ด ์ ํํ ํ๋ซํผ์์ ์ต๊ณ ์ ๊ฒฝํ์ ์ป์ ์ ์์ต๋๋ค. ์ฌ๋๋ค์ด ํฌ๋ก์ค ํ๋ซํผ ์๋ฃจ์
์ ์ํ๋ค๋ฉด ๊ด์ฐฎ์ต๋๋ค. ๊ทธ ๋ชฉ์ ์ ์ํด ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐพ์์ผ ํฉ๋๋ค. ์๋ง๋ Windows ํ๋ซํผ์์ WinUI๋ฅผ ๋ํํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ผ ๊ฒ์
๋๋ค.
๊ทธ๋ฆฌ๊ณ PWA์ ๊ด๋ จํ์ฌ ์ด๋ค์ Windows UI ์์คํ ์ ์ ์ฒด ์ฌ์ฉ์ ๋ํ๋ด์ง ์์ผ๋ฉฐ "๋จ์ผ ์ฐฝ ์์ฉ ํ๋ก๊ทธ๋จ"์ ์ค์ ์ ๋๋ ๊ฒ์ด ์ข์ต๋๋ค(๊ฒ์ ์ ์ธ). PWA ๋ฐ ํฌ๋ก์ค ํ๋ซํผ์ ์ํ ์๋ฃจ์ ์ด ์ด๋ฏธ ์์ต๋๋ค. ๋ค๋ฅธ ์๋ฃจ์ ์ ํ์ํ์ง ์์ต๋๋ค.
์๋ฌด XKCD:
https://xkcd.com/927/
@MarkIngramUK ํฌ๋ก์ค ํ๋ซํผ์ ๋ํ ์ด์ผ๊ธฐ๋ UI๋ฅผ ์ ์ธํ๊ธฐ ์ํด .NET ๋ฐ XAML๋ก ์ฝ๋ฉํ ์ ์๋ค๋ ๊ฒ์ ๊ดํ ๊ฒ์ ๋๋ค. ๊ทธ๋ฐ ๋ค์ ํด๋น ์ฑ์ Android, iOS, macOS, Linux์์ ์คํํ๋ ๊ฒ์ธ๊ฐ์?! - ๋ค์ ์๋ ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ๊ฑฐ๋ XAML์ ํฌ๊ธฐํ ํ์๊ฐ ์์ต๋๋ค.
์ด์ ์ด๋ฌํ ๋ค๋ฅธ ํ๋ซํผ์ ๋ํ XAML ๋ ๋๋ฌ๊ฐ ์๋ ๊ฒฝ์ฐ XAML์ ํด์ํ๋ ๋ฐฉ๋ฒ์ ๊ธฐ๋ณธ UI ํ๋ซํผ์ผ๋ก ์ ๋ฌ๋๋ Xamarin Forms์ ๊ฐ์ ์ ์์ต๋๋ค. ๋์ผํ ์ปจํธ๋กค ์คํ์ผ.
WinUI 3.0์ ๋ค์ํ API ๋ฐ ABI๋ฅผ ์ต์ XAML ๊ธฐ๋ฐ UI ํ๋ซํผ๊ณผ ํตํฉํ๊ธฐ ์ํด Windows ์ค์ฌ ํ๋ก์ ํธ๋ก ๋จ์ ์์ด์ผ ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด๊ฒ์ด Xamarin์ด๋ ๊ฐ์ธ์ด ๋ ๋๋ง ์ฝ๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ค๋ฅธ ํ๋ซํผ์ฉ ๋ฒ์ ์ ๋ง๋ค ์ ์๋ค๋ ๊ฒ์ ์๋ฏธํ์ง๋ ์์ต๋๋ค.
(๋์ ์์ค์ ์ฌ๊ณ ๋ฐฉ์์์) ์ค์ ๋ก ํ์ํ ๊ฒ์ Windows์ ํ๋ฉด์ XAML์ ๋ ๋๋งํ๋ ์ฝ๋๊ฐ ํฌํจ๋๋๋ก ํ์ฌ ๋ค๋ฅธ ๋ ๋๋ฌ๊ฐ ํ๋ซํผ ๊ฐ ์๋๋ฆฌ์ค์ ์ฐธ์ฌํ ์ ์๋๋ก ํ๋ ๊ฒ์ ๋๋ค.
WinRT/UWP/XAML์ Windows 10 OS์์ ๋ถ๋ฆฌํ๊ธฐ ์ํด ์ฝ๊ฐ์ ๋ฆฌํฉํ ๋ง์ด ํ์ํฉ๋๋ค. ๋ฐ๋ผ์ ํฅํ ํ์ฅ์ ์ํด ๋ฆฌํฉํ ๋ง์ ์ํํ๋ ๋ฐฉ๋ฒ์ ์ผ๋์ ๋์ด์ผ ํฉ๋๋ค. ํฌ๋ก์ค ํ๋ซํผ์ด ํ์ค์ด ๋๋์ง ์๋์ง.
@MarkIngramUK ๋๋ @mdtauk์ ๋์
React๋ฅผ ํฌํจํ ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ UI ๊ตฌ์ฑ ์์๋ฅผ ์ค๋ช
ํ๊ธฐ ์ํด xaml์ ์ฌ์ฉํ ์ ์๋ ์ด์ ๋ ์์ต๋๋ค. http://www.cshtml5.com ๊ณผ ๊ฐ์ ํ๋ก์ ํธ๋ฅผ ๋ณด๋ฉด html๋ก ๋ณํ๋๋ xaml์ ์ฌ์ฉํฉ๋๋ค.
๋๋ ๋ํ ์ต์ข
๋ชฉํ๊ฐ UI๊ฐ ๋ค๋ฅธ ํ๋ซํผ์์ ๋์ผํ๊ฒ ๋ณด์ด๋ ๊ฒ์ด๋ผ๋ ์ฌ์ค์ ์๋ฌด๋ ์ธ๊ธํ์ง ์๋๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋ฌ๋ ๊ฐ์ธ์ ์ผ๋ก ์ํ๋ ๊ฒ์ UWP์ ๊ฐ์ ๊ธฐ์กด ํฌ์๋ฅผ ํ์ฉํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ UI ์ธก๋ฉด์ ๊ฒ์
๋๋ค.
์์ ์ ๋ฐ๋ก ์ด๊ฒ์ ๋๋ค. ๋ด๊ฐ ๊ธฐ์ ๊ณ ๊ฐ์๊ฒ ์ ์์ ํ๊ณ ๋ชจ๋ ๋ฉด์์ ํ์์ ์ธ ๋ฉ์ง UWP ์ฑ์ ์ ์ํ๋ค๋ฉด. ํด๋น ๊ธฐ์ ๊ณ ๊ฐ์๊ฒ ์๋ฅผ ๋ค์ด MacBook Pro๋ฅผ ์ฌ์ฉํ๋ ์ฌ์ฉ์๊ฐ 1๋ช ์๋ ๊ฒฝ์ฐ ๊ธฐ์ ๊ณ ๊ฐ์ ์คํํ๋๋ผ๋ ๋ด "๊ธฐ๋ณธ ์ฑ"๋ณด๋ค ๋ชจ๋ ๊ณณ์์ ์๋ํ๋ ์ฑ(์ต์ ๋ถ๋ชจ => ์น ์ฌ์ดํธ)์ ํํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ์ฆ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค. ์๋์ฐ 10์์.
๊ทธ๋์ ์ ๊ทผ์ฑ ์ด ์ค์ํฉ๋๋ค. MS๊ฐ ์ฌ์ ํ ํฌ๋ก์ค ํ๋ซํผ ๊ธฐ๋ฅ์ ๋ํ ๋ก๋๋งต ์์ด 2019๋ ์ "๋ค์ดํฐ๋ธ ์ฑ"์ ํฌ์ํ ๊ฒ์ผ๋ก ๊ธฐ๋ํ๊ณ ์๋ค๋ ์ฌ์ค์ ๋ฏธ์น ์ง์ ๋๋ค.
์ํฐํ๋ผ์ด์ฆ ๊ด์ ์ ๋ชจ๋ ์ ํ๋ก์ ํธ๋ ์ก์ธ์ค ๊ฐ๋ฅ์ฑ์ ๋ํ ์์ ๋ ผ๋ฆฌ๋ฅผ ๋ฐ๋ฅผ ๊ฐ๋ฅ์ฑ์ด ๋์ผ๋ฏ๋ก XAML/UWP์ ํฌ๋ก์ค ํ๋ซํผ ๊ธฐ๋ฅ์ ํฌํจํ๋ ๋ก๋๋งต์ด ์๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ์ ํ๋ก์ ํธ๋ ์น๊ณผ ๋ชจ๋์ ํธ์ค๋ฉ๋๋ค.
๊ทธ๋์ ์ฐ๋ฆฌ๋ ์ง๊ธ๋ถํฐ 2-3๋ ํ, UWP/win32์ ๋ํ ๊ธฐ์ ์
MS๋ XAML์ด ๋ด์ผ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ผ๋ฉฐ "์๋ก์ด" UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋ฅผ ๋ค์ด React๋ผ๊ณ ๋งํ ์๋ ์์ต๋๋ค. C#์ ์ด ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ถ์ผ ์ ์๋ ํ ์ ๋ ์์ค์ ์ค์ด๊ณ XAML์ ๋ฒ๋ฆฌ๊ณ ์ด ์๋ก์ด ๊ต์ฐจ ํ๋ซํผ UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์์ฉํ ๊ฒ์ ๋๋ค. ์ ์ด๋ ๋ด ํฌ์๋ ๋ด๊ตฌ์ฑ์ด ์๊ณ ์ฅ๊ธฐ์ ์ผ๋ก ์ ๊ทผํ ์ ์์ต๋๋ค.
ํฌ๋ก์ค ํ๋ซํผ UI ๊ธฐ๋ฅ๊ณผ ๊ด๋ จ๋ ์ด ํน์ ๋ฌธ์ ์ ๋ํ ๋ช ํ์ฑ ์ ์ ๊ณตํ์ง ์์์ผ๋ก์จ MS๋ "๋ค์ดํฐ๋ธ ์คํ"์ ๋ํ ๋ถํ์ค์ฑ์ ์์ฑํ๊ณ ์์ผ๋ฏ๋ก ๋๋ถ๋ถ์ ๊ธฐ์ ์ ๋ฏธ์ง์ ๊ฒ์ ํฌ์ฉํ๊ธฐ๋ณด๋ค ๋๋ฌด ๋ค๋ฆฌ๋ก ๋ถ๊ธธ์ ํค์ณ ๋๊ฐ ๊ฒ์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ PWA์ ๊ด๋ จํ์ฌ Windows UI ์์คํ ์ ์ ์ฒด ์ฌ์ฉ์ ๋ํ๋ด์ง๋ ์์ต๋๋ค.
์ถฉ๋ถํ ๊ณต์ ํ๊ณ ๋์ํฉ๋๋ค. PWA์ ๋ํ ๋์ ์ฃผ์ ์์ ์ ์์ฅ ์ ์ ์จ์ด ๋ชจ๋ ์์ฅ์ ์งํฉ์ฒด๋ก ๊ตฌ์ฑ๋์ด ์๊ธฐ ๋๋ฌธ์ ๋จ์ผ ํน์ ์์ฅ์ด ์์ํ๋ค๋ ๊ฒ์ ์ ์ฆํ๋ ๊ฒ์ด์์ต๋๋ค.
์ฆ, ์ฌ๊ธฐ์์ ํผ๋์ค๋ฌ์ด ๋ถ๋ถ์ Microsoft.*
๋ฅผ ๋ฐ์ํ๋ ๋ค์์คํ์ด์ค๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ค์ ๋ก๋ ์ฌ์ ํ Windows.*
(๋๋ Microsoft.Windows.*
)์ฌ์ผ ํฉ๋๋ค. .
PWA ๋ฐ ํฌ๋ก์ค ํ๋ซํผ์ ์ํ ์๋ฃจ์ ์ด ์ด๋ฏธ ์์ต๋๋ค. ๋ค๋ฅธ ์๋ฃจ์ ์ ํ์ํ์ง ์์ต๋๋ค.
๋ถํํ๋ ์ด๊ฒ์ .NET ๊ฐ๋ฐ์ ๊ฒฝ์ฐ๊ฐ ์๋๋๋ค. ์ด๋ ์ด ๋ฐํ์ ํ์ ๋ ผ์์ ๋ํ ํผ๋๊ณผ ํ๋ซํผ ๊ฐ ๋ถ์์ ์ผ๋ถ์ ๋๋ค.
๋ฐ๋ผ์ ์์ฉ ํ๋ก๊ทธ๋จ ๊ฐ๋ฐ์๋ฅผ ์ํ ์์ฅ ๋๋ฌ ๋ฒ์์ ์ ์ฌ์ ์์ต์ ๊ทน๋ํํ๋ ๋์์ ์์ฉ ํ๋ก๊ทธ๋จ์ ๊ตฌ์ถํ๋ ๋ฐ ํ์ํ ๋น์ฉ์ ์ค์ ๋๋ค.
๋๋ก๋ ์ฑ๋ฅ๊ณผ UX ์ธ๋ถ ์ฌํญ์ด ํฐ ์ฐจ์ด๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. Skype๋ ์ฑ๋ฅ์ ํฌ์ํ๋ฉด์ Electron ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ์ฌ ์์ฅ ๋๋ฌ ๋ฒ์๋ฅผ ๊ทน๋ํํ์ผ๋ฉฐ ๊ฒฐ๊ณผ๋ ์์ ์ ์ฌ์์ ๋๋ค.
ํฌ๋ก์ค ํ๋ซํผ(xplat) ์๋ฃจ์
๊ด๋ จ.
Xplat ์๋ฃจ์
์ ์ฌ๋ฌ ๊ธฐ๋ณธ ๊ธฐ๋ณธ ์์คํ
์ ๋ํ ์ถ์ํ์
๋๋ค. WinUI์ ๋ํ ๋์ ์ดํด๋ ์ด๊ฒ์ด Windows์ ๊ธฐ๋ณธ ์์คํ
์ด ๋ ๊ฒ์ด๋ผ๋ ๊ฒ์
๋๋ค.
WinUI๋ xplat์ด ๋๋ค๋ฉด Windows ๊ณ ์ ์ ๊ธฐ๋ฅ์ ์ด๋ป๊ฒ ํตํฉํ ๊น์? ๊ทธ๊ฒ์ด ์๋กญ๊ณ ํ์ ์ ์ธ ์ผ์ ํ๋ ๊ฒ์ ๋ฐฉํดํ์ง ์์๊น์? ์๋๋ฉด Microsoft๊ฐ Windows์์ ๋ค๋ฅธ ํ๋ซํผ์ผ๋ก ์๋ก์ด ๊ฒ์ ํฌํ ํ๊ฑฐ๋ ์ฐจ๋ณํํ๋ ๊ฒ์ ์๋ฏธํฉ๋๊น? ๋ค๋ฅธ ๊ธฐ๋ณธ OS๊ฐ ์ง์ํ ์ ์๊ธฐ ๋๋ฌธ์ ์ด์ํ ์ ์๋ ๊ฒ์ Windows์ ์ถ๊ฐ๋์ง ์์์ผ ํฉ๋๊น?
๊ธฐ๋ณธ Windows ๊ธฐ์ ๋ก ๋ฌด์ธ๊ฐ๋ฅผ ๊ตฌ์ถํ๋ ๊ฒฝ์ฐ Microsoft๊ฐ ์ผ์ ๊ธฐ๊ฐ ๋์ ์ด๋ฅผ ์ง์ํ๊ณ ํฅํ ์๋ก์ด Windows ๊ธฐ๋ฐ ์์คํ ์ผ๋ก ๋์๊ฐ ์ ์๋ ๊ฒฝ๋ก๋ฅผ ์ ๊ณตํ ๊ฒ์ด๋ผ๊ณ ๊ฐ์ ํ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ ๋๋ค. (SilverLight๋ ์์ธ๋ก ์ธ์ ํฉ๋๋ค.) ๊ธฐ๋ณธ Windows ๊ธฐ์ ์ ์ฌ์ฉํ์ฌ ๋ฌด์ธ๊ฐ๋ฅผ ๋น๋ํ ๋ค์ ๊ฒฝ์ ์ด์ ์ฒด์ ์์ ์คํํ๋ ค๋ ๊ฒฝ์ฐ ์ด๋ฅผ ์ฝ๊ฒ ๋ง๋๋ ๊ฒ์ Microsoft/Windows์ ๋ฌ๋ ค ์๋ค๊ณ ๊ฐ์ ํ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ด์ง ์๋ค๊ณ ์๊ฐํฉ๋๋ค. Swift๋ฅผ ์ฌ์ฉํ์ฌ iPad์ฉ ์ฑ์ ๋ง๋ค๊ณ Windows ๋ฐ์คํฌํฑ์๋ ๊ฐ์ ธ์ค๊ณ ์ถ๋ค๋ฉด Apple์ด iOS ๊ฐ๋ฐ์ ์ฝ๊ฒ ๋ณ๊ฒฝํ๊ธฐ๋ฅผ ๊ธฐ๋ํ์๊ฒ ์ต๋๊น?
๊ธฐ๋ณธ Windows ๊ธฐ์ ์ฌ์ฉ์ ์ฆ๊ธฐ๊ฑฐ๋ ์ ํธํ๋ค๋ฉด ํ๋ฅญํฉ๋๋ค. ๋น์ ์ด ํ ์ ์๋ ๊ฒ์ ๊ทธ๋ฌํ ๊ธฐ์ ์ ์ ํํ ๋ ๋ด๋ฆฌ๋ ๋น์ฆ๋์ค ๊ฒฐ์ ์ ๋ค๋ฅธ ์ฌ๋์๊ฒ ๋ฏธ๋ฃจ๋ ๊ฒ์ ๋๋ค. ๋ชจ๋ ๊ธฐ์ ์ ํ์๋ ๊ฒฐ๊ณผ๊ฐ ๋ฐ๋ฅด๋ฉฐ ํฅํ ๋ช ๋ ๋์ ๋ฌด์์ด ํ์ํ ์ง ๋๋ ๊ณ ๊ฐ์ด ๋ฌด์์ ์๊ตฌํ ์ง ์๋ฌด๋ ๋ชจ๋ฆ ๋๋ค. Windows์ฉ์ผ๋ก ํน๋ณํ ๊ฐ๋ฐ๋ ์ํํธ์จ์ด๋ฅผ ๋ค๋ฅธ ๊ณณ์์๋ ์คํํ ์ ์๋๋ก ์์ฒญํ๋ฉด ๋ฏธ๋์ ์ด๋ ์์ ์์๋ ๋ถ์ ์ ์ธ ๊ฒฐ๊ณผ๋ฅผ ์ด๋ํ ์ ์๋ ๊ธฐ์ ๊ฒฐ์ ์ ํผํ๋ ๊ฒ์ด ๋ชฉํ๋ผ๋ ์ธ์์ ์ค ์ ์์ต๋๋ค. ๊ธฐ์ ์ ํน์ฑ๊ณผ ๋ณํ์ ์๋์ ๋น์ถ์ด ๋ณผ ๋ ๊ทธ๊ฒ์ด ํ์ค์ ์ด์ง ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ฆ, ํ์ฌ ์ฌ๋ฌ ์ด์ ์ฒด์ ๋ฅผ ๋์์ผ๋ก ํ๊ฑฐ๋ ๋ฏธ๋์ ์ํ ์ ์๊ธฐ ๋๋ฌธ์ xplat ์๋ฃจ์
์ ๊ตฌ์ถํ๋ ค๋ ๊ฒฝ์ฐ(๋ง์ ์ฌ๋๋ค์ด ๊ทธ๋ ๊ฒ ํ๋ ์ด์ ์ ์ด์ ๊ฐ ์์), ์ด๋ ํฉ๋ฆฌ์ ์ด๊ณ ์ดํดํ ์ ์์ต๋๋ค. ๋๋ณธ.
์ด๋ฅผ ์ํด Microsoft์๋ Xamarin์ด ์์ต๋๋ค. ๋๋ UWP์ ๊ฐ์ XAML์ ์ฌ์ฉํ๋ ๊ฒ์ ์ ํธํ๋ ๊ฒฝ์ฐ Uno๊ฐ ์์ต๋๋ค. (๋ค๋ฅธ ์ต์
๋ ๋ง์ด ์์ต๋๋ค.)
์ ์ฒ๋ผ Xamarin์ด Windows ์ฑ ๋น๋์ ๋ํด ๋ ๋์ ๊ธฐ๋ณธ ์ง์์ ์ ๊ณตํ๋ ๊ฒ์ ๋ณด๊ณ ์ถ๋ค๋ฉด WinUI๊ฐ ์ฌ๋ฌ ๊ฐ์ง ์์
์ ์๋ํ๊ณ ์ํํ๋ ๊ฒ์ด ๋ต์ด๋ผ๊ณ ์๊ฐํ์ง ์์ต๋๋ค.
WinUI๋ XAML ๋ฐ ํน์ ์ปจํธ๋กค ๊ทธ ์ด์์
๋๋ค. ์ฌ๊ธฐ์๋ ์ด๋ฌํ ์ปจํธ๋กค๊ณผ ์ด๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌ์ถ๋ ์ฑ์ด ๊ธฐ๋ณธ ์ด์ ์ฒด์ ์ ํตํฉ๋๋ ๋ฐฉ์์ ๋ํ ์ธ๋ถ ์ ๋ณด๊ฐ ํฌํจ๋ฉ๋๋ค.
WinUI ๊ณํ์ด Windows์์ Windows ๊ฐ๋ฐ์ ์ต๊ณ ๋ก ๋ง๋๋ ๋ฐ ์ด์ ์ ๋ง์ถ๋ฉด ํ์ ๊ณผ ์ข์ ๋ฏธ๋ ์ง์์ ์ํ ์ข์ ์ฌ๋ก๊ฐ ๋ ์ ์์ต๋๋ค. ๋ํ ์ฌ๋๋ค์ด Windows๋ฅผ ๊ณ์ ์ฌ์ฉํ๊ธฐ๋ฅผ ์ํ ๊ฐ๋ฅ์ฑ์ด ๋์์ง๋ฏ๋ก ์ฌ๋ฌ xplat ์๋ฃจ์
์ ๊ฒฌ๊ณ ํ ์ง์์ด ์ค์ํด์ง๋๋ค.
ํฌ๋ก์ค ํ๋ซํผ(xplat) ์๋ฃจ์ ๊ด๋ จ.
Xplat ์๋ฃจ์ ์ ์ฌ๋ฌ ๊ธฐ๋ณธ ๊ธฐ๋ณธ ์์คํ ์ ๋ํ ์ถ์ํ์ ๋๋ค. WinUI์ ๋ํ ๋์ ์ดํด๋ ์ด๊ฒ์ด Windows์ ๊ธฐ๋ณธ ์์คํ ์ด ๋ ๊ฒ์ด๋ผ๋ ๊ฒ์ ๋๋ค.
๋ฏธ์ํ์ง๋ง ๋ ๊ทธ๋ฐ ๋๋์ด ์๋์ผ...
Flutter๋ฅผ ๋ณด์ธ์... ์ง์ํ๋ ๋ชจ๋ ํ๋ซํผ์์ ๋ฌด์์ด๋ ๋ ๋๋งํ ์ ์๋ ํต์ฌ ์์ง์ด ์์ต๋๋ค.
๋ํ ์์ง ๊ด๋ฆฌ ๋ ์ด์ด๋ฅผ ์ฌ์ฉํ์ฌ Dart์์ ์์ ํ ๊ตฌํ๋๊ณ ํฝ์ ์ถฉ์ค๋๋ก ํํ(๊ทธ๋ฆฌ๊ธฐ/๋ ๋๋ง)ํ๋ ๊ตฌ์ฑ ์์๊ฐ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด Material.io ๋ฐ Apple์ Cupertino์ ๊ฐ์ด ์ฌ์ฉํ๋ ค๋ ํ๋ซํผ ๋ฐ ๋์์ธ ์ธ์ด์ ๋๋ค.
๋ฐ๋ผ์ IMHO๋ ํ๋ซํผ ๊ฐ ๋ฌด์ธ๊ฐ๋ฅผ ๋ง๋๋ ๊ฐ์ฅ ์ข์ ์ ๊ทผ ๋ฐฉ์์ด ๋ ๊ฒ์ด๋ฉฐ ๋์์ ๊ธฐ๋ณธ ํ๋ซํผ ๊ธฐ๋ฅ์ ๋ํ๋ ๋๋ค.
๊ธฐ๋ณธ Windows ๊ธฐ์ ๋ก ๋ฌด์ธ๊ฐ๋ฅผ ๋น๋ํ ๋ค์ ๊ฒฝ์ ์ด์ ์ฒด์ ์์ ์คํํ๋ ค๋ ๊ฒฝ์ฐ ์ด๋ฅผ ์ฝ๊ฒ ๋ง๋๋ ๊ฒ์ Microsoft/Windows์ ๋ฌ๋ ค ์๋ค๊ณ ๊ฐ์ ํ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ด์ง ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋ง์์... ์ ์๊ฐ์ ๋ค๋ฅธ ์ฌ๋๋ค์ด ๋งํ๊ณ ์๋ ์์ ์ ์ด๊ฒ์ด ์์ฆ, ํนํ ์๋ก์ด ์์ฉ ํ๋ก๊ทธ๋จ์ ์์ํ๋ ๋งฅ๋ฝ์์ ์ฝ๊ฐ ํ์ง์ ์ด๊ฑฐ๋ ๋๊ฐํด ๋ณด์ธ๋ค๋ ๊ฒ์ ๋๋ค. ์์ฅ์ ์์ %์ ๋ถ๊ณผํ ๋ ๋๊ตฐ๊ฐ๊ฐ ๋ค์ดํฐ๋ธ Windows ์์ฉ ํ๋ก๊ทธ๋จ์ ๊ตฌ์ถํ๋ ์ด์ ๋ ๋ฌด์์ ๋๊น? ์ด๊ฒ์ ์๋ณธ์ ์ข์ ์ฌ์ฉ์ด ์๋๋๋ค.
๋ ๊ฑฐ์ Windows ์์ฉ ํ๋ก๊ทธ๋จ์ ์ ์ง ๊ด๋ฆฌํ๊ฑฐ๋ ํน๋ณํ Windows ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ง๋๋ ๊ฒ์ด๋ผ๋ฉด ์ด ๋ชจ๋ ๊ฒ์ ๋์ํ๋ฉฐ ์ดํด๊ฐ ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ํ๊ธฐ์ ์ธ ๋ณํ์ ์ถ๊ฐ ํฌ์๊ฐ ํฌํจ๋ ๊ฒ์ผ๋ก ๋ณด์ด๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ์ํํ๋ ๊ฒ๊ณผ Flutter๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๊ฐ์น ์ ์์ ์์ง ์ค๋ช ๋์ง ์์์ต๋๋ค.
์ ๊ฐ ํ๋ ๋ง์ด ๋ฐ๋ก...
์๋ฅผ ๋ค์ด, Win10(WPF ๋ฐ UWP)๊ณผ OSX ๋ชจ๋์์ ๋ฐ์คํฌํฑ์ฉ ํ๋ฌํฐ ์๋ฒ ๋๊ฐ ์ถ์๋ ์์ ์ ๋๋ค.
๊ทธ๊ฒ๋ค์ ํ๋ฌํฐ ๋ฐํ์์ ์ํด 100% ๊ด๋ฆฌ๋์ง๋ง, ์๋์ฐ ๊ด๋ฆฌ์ Graphics
ํฌ์ธํฐ๋ฅผ ์ป๊ธฐ ์ํด (์๋ฅผ ๋ค์ด) WPF/UWP๋ง์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ๋๋จธ์ง๋ ๋ชจ๋ ์์ง์์ ๊ด๋ฆฌํฉ๋๋ค ...
์ฐ๋ฆฌ๋ ํ๋ฌํฐ ์์ง์ ์๋ฒ ๋๋ ARM ์ฅ์น์ ์ด์ํ๊ณ ์ ๋ง ๋ฉ์ง ๊ฒฝํ์ด์์ต๋๋ค. ์์? "์๋ฒ ๋"๊ฐ GPU, ์ํํธ์จ์ด ๋ ๋๋ง, ์ ๋ ฅ ๊ด๋ฆฌ ๋ฑ๊ณผ ๊ฐ์ ๊ธฐ๋ณธ ์์์ ๋ํ ํ๋ซํผ๋ณ ๊ตฌํ ์ธ๋ถ ์ ๋ณด๋ฅผ ์ฒ๋ฆฌํ๋๋ก ํ์ฌ ์ด์ ๊ฐ๋ฅํ๊ณ ์ด๋์๋ ์คํ๋๋๋ก ํ์ด๋ฌ๊ธฐ ๋๋ฌธ์...
๋ด๊ฐ ๋งํ๋๊ฑฐ์ผ ์ด์ ์
๋๋ค WinUI
๋ฅผ ์ด์ฉํ์ฌ UWP: The empire strikes back
์ฅ๊ธฐ์ ์ผ๋ก ์๋ํ์ง ์์.
MSFT๋ ํ๋ซํผ ๊ฐ, ๊ฐ๋ฐฉ์ฑ, ์ด์์ฑ์ ์ ๊ณตํด์ผ ํฉ๋๋ค. .Net Core, Blazor ๋ฑ์์ ํ๋ ๊ฒ์ฒ๋ผ... Reinvent UWP/XAML์ ์๋ฌด๋ฐ๋ ๊ฐ์ง ์์ ๊ฒ์ ๋๋ค.
์ ๋ XAML์ด UI๋ฅผ "์ค๋ช "(๋๋ ์ผ๋ถ ์ฌ๋๋ค์ด ๋งํ๋ ๊ฒ์ฒ๋ผ ์ ์ธ)ํ๋ ๋ฐ ์ฌ์ฉ๋๋ ์๋ฏธ์์ ์ ์ ํ๊ฒ ์ฌ์ฉ๋๋ค๋ฉด ์ข์ ์ ์ฌ๋ ฅ์ ๊ฐ์ง๊ณ ์๋ค๊ณ ๋ฏฟ์ต๋๋ค. "์์ง"์ ์ฌ๊ธฐ์์ ๋ ๋ ํธ๋ฆฌ๋ฅผ ๋น๋ํ ๋ค์ ๋ ๋ ๋ช ๋ น์ ๊ธฐ๋ณธ ํ๋ซํผ์ ์ ๋ฌํฉ๋๋ค.
MSFT๊ฐ ์ต๊ทผ Chromium์ Edge์ ํต์ฌ์ผ๋ก ์ฌ์ฉํ ๊ฒ์ฒ๋ผ WinUI(๋๋ ์ด๋ฆ์ด ๋ฌด์์ด๋ ๊ฐ์)๋ GL, DX, Vulkan, Software Rendering, FB ๋ฑ์ ๋ํ ๋ฐฑ์๋๊ฐ ์์ผ๋ฏ๋ก Skia๋ฅผ ํ์ฉํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋์ค์ ๋ค๋ฅธ ํ๋ซํผ์ ์ถ๊ฐํ ์ ์๋ ์์ฒญ๋ ์ ์ฌ๋ ฅ์ด ์๋ค๋ ๊ฒ์...
@galvesribeiro ,
Flutter๋ฅผ ๋ณด์ธ์... ์ง์ํ๋ ๋ชจ๋ ํ๋ซํผ์์ ๋ฌด์์ด๋ ๋ ๋๋งํ ์ ์๋ ํต์ฌ ์์ง์ด ์์ต๋๋ค.
๋ํ ์์ง ๊ด๋ฆฌ ๋ ์ด์ด๋ฅผ ์ฌ์ฉํ์ฌ Dart์์ ์์ ํ ๊ตฌํ๋๊ณ ํฝ์ ์ถฉ์ค๋๋ก ํํ(๊ทธ๋ฆฌ๊ธฐ/๋ ๋๋ง)ํ๋ ๊ตฌ์ฑ ์์๊ฐ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด Material.io ๋ฐ Apple์ Cupertino์ ๊ฐ์ด ์ฌ์ฉํ๋ ค๋ ํ๋ซํผ ๋ฐ ๋์์ธ ์ธ์ด์ ๋๋ค.
์ข์ต๋๋ค. Apple์ด macOS์ ๋ํ ์ ๋ฐ์ดํธ๋ฅผ ์ถ์ํ๊ณ UI ์ ๋ฐ์ดํธ(์๋ง๋ ๋ฒํผ ๋ชจ์๋ฆฌ ๋ฐ๊ฒฝ ๋ณ๊ฒฝ ๋๋ ๋ฐฐ๊ฒฝ ๊ทธ๋ผ๋์ธํธ ๋ณ๊ฒฝ ๋ฑ)๋ฅผ ํ์๋ง์ Flutter ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ ๋ฐ์ดํธ๋์ง ์๊ณ ๋ค์ดํฐ๋ธ์ ๋ฌ๋ฆฌ ๊ณ์ ์ด์ OS์ฒ๋ผ ๋ณด์ ๋๋ค. ์ด๋ค ๊ฒ์ด ๋ฌด๋ฃ๋ก ํํ์ ๋ฐ์์ง ์ ์ดํฉ๋๋ค.
@MarkIngramUK ์ ๋ฐ์ดํธ๋ฅผ ์ง์ํ๋ ํ์ ์์ ์ ๋๋ค.
Xamarin ํ์ด 0+1์ผ์งธ๋ถํฐ ์ ๋ฐ์ดํธ๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ฒ๋ผ ์ด ํ๋ ๋์ผํ ์์ ์ ์ํํ ์ ์์ต๋๋ค. Google ํ๋ ๊ทธ๋ ๊ฒํฉ๋๋ค ...
"๋ค์ดํฐ๋ธ" ์ปจํธ๋กค์ ์ฌ์ฉํ๋ฉด ๋ํผ(๋ ๋๋ผ๊ณ ๋ ํจ)์ ๊ฐ์ Xamarin ์ธ๊ณ๋ก ๋ค์ ๋์๊ฐ๋๋ค.
์ฐ๋ฆฌ๋ ๋ค์ดํฐ๋ธ ์ปจํธ๋กค์ ๋ํ C# ๋ฐ์ธ๋ฉ(Xamarin์ฒ๋ผ)์ ๋ํด ๋ ผ์ํ์ง ์๊ณ ์์ต๋๋ค... Flutter์์์ ๊ฐ์ ์ ์ฒด UI ํ๋ ์์ํฌ์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์์ต๋๋ค...
๊ธฐ๋ก์ ์ํด ์๋ฌด๋ ๋ชจ๋ ํ๋ซํผ์ ๋ํด "๊ธฐ๋ณธ" ํ ๋ง๋ฅผ ์ฌ์ฉํ์ง ์์ต๋๋ค. ๊ทธ๋ค์ ๋ชจ๋ ๊ฐ ํ๋ซํผ์ ๋์์ธ ์ธ์ด ์์ ๊ณ ์ ํ UX๋ฅผ ๋ง๋ญ๋๋ค.
ํญ์ ๊ธฐ๋ณธ ๊ตฌ์ฑ ์์๋ก ๋ณด์ด๋ ๊ฒ์ด ๊ฑฑ์ ๋๋ค๋ฉด ์ฑ์ ๋ณด์ด๋ ๊ฒ์ฒ๋ผ ์ข์ ์ฒญ์ค์ด ์์ ๊ฒ์ ๋๋ค. ์...
๋๋ ์ฐ๋ฆฌ๊ฐ ์ฌ๊ธฐ์ ๋ ๊ฐ์ง ๋ค๋ฅธ ํ๋ก์ ํธ์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. WinUI๋ Win32๋ฅผ ๋์ฒดํด์ผ ํฉ๋๋ค. ์ฌ๋๋ค์ด ํฌ๋ก์ค ํ๋ซํผ ์๋ฃจ์ ์ ์๊ตฌํ๊ณ ์๋๋ฐ, ์ด๋ ํฉ๋ฆฌ์ ์ด์ง๋ง ์ด ํ๋ก์ ํธ๋ ํด์๋ ์ ๋๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋ํ Flutter๋ฅผ ์ฌ์ฉํ๋ฉด ๋ชจ๋ ํ๋ซํผ์์ "ํ ๋ง"๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ Win10 PC์์ Cupertino๋ฅผ ์คํํ ์ ์์ต๋๋ค. ํฐ ์๋ ๋จธํฐ๋ฆฌ์ผ ๋์์ธ์ ๋๋ค. ์ปจํธ๋กค ์ธํธ๊ฐ ์๋ ๋์์ธ ์ธ์ด์ ๋๋ค. ๊ทธ๊ฒ์ ์ด๋์์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค ... Android์ ๊ฐ์ ์ผ๋ถ ํ๋ซํผ์๋์ด๋ฅผ ๊ตฌํํ๋ ๊ธฐ๋ณธ ์ปจํธ๋กค์ด ์์ต๋๋ค ...
@MarkIngramUK
WinUI๊ฐ ๋จ์ํ Win32๋ฅผ ๋์ฒดํด์๋ ์ ๋๋ ์ด์ ๋ฅผ ๋ช ํํ ํ๋ ๊ฒ๋ฟ์ ๋๋ค.
๊ทธ๋ ๋ค๋ฉด UWP์ ๋ง์ฐฌ๊ฐ์ง๋ก ๊ฐ๊น์ด ๋ฏธ๋์ ๋จ์ด์ง ๊ฒ์ด๋ผ๊ณ ํ์ ํฉ๋๋ค...
@MarkIngramUK WinUI ์์ฒด๋ C#, WinRT API, Win32 ABI, C++, F#, VB, .NET Core๋ฅผ ์ฌ์ฉํ๋์ง ์ฌ๋ถ์ ๊ด๊ณ์์ด Windows์ฉ ํตํฉ UI๋ฅผ ์ ๊ณตํ๋ ๋ฐ ์ค์ ์ ๋์ด์ผ ํ๋ค๋ ๋ฐ ๋์ํฉ๋๋ค.
WinUI 3.0์๋ Windows OS์์ ๋ชจ๋ ์ฝ๋์ XAML ๋ ๋๋ง์ ๋ค์ด ์ฌ๋ ค OS ์ ๋ฐ์ดํธ ์ฃผ๊ธฐ์ ๋ ๋ฆฝ์ ์ธ ํ๋ ์์ํฌ๋ก ๋ง๋ค๊ณ ์คํ ์์ค๋ก ๋ง๋๋ ์์ ์ด ํฌํจ๋ฉ๋๋ค.
๊ทธ๊ฒ์ ๋ค์ด ์ฌ๋ฆฌ๊ณ ์ฌํฌ์ฅํ๋ ๋ฐฉ๋ฒ์ ์ฌ์ ํ โโ๊ณต์ค์ ๋๋ค. Microsoft ๋ด๋ถ ์ง์๋ง์ด ์ด๋ป๊ฒ ํ ๊ฒ์ธ์ง ์๊ณ ์์ต๋๋ค. XAML์ ๋ํ ํฅํ ๊ต์ฐจ ํ๋ซํผ ์ง์์ ์ง์ํ๊ธฐ ์ํด Windows์์ XAML์ ์ ๊ฑฐํ ๋ ํฅํ ๋ฌ์ฑํ ์ ์๋ ๋ฐฉ๋ฒ์ ๋ํด ์ฝ๊ฐ๋ง ์๊ฐํ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
.NET Core๋ ์ด๋ฏธ ๋ค๋ฅธ ํ๋ซํผ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๊ฒ์ด ์ด๋ฏธ ์๋ ๊ฐ๋ฅํ C# ์ฝ๋์ ๋๋ค. ์ด์ iOS/macOS/Android/Linux(๋ฐ ํฅํ ์ ๊ณต๋ ์ ์์)์ ๋ํ ๊ฒฝ๋ก๊ฐ ํ์ํ XAML ๋ฐ UI ๋ฐ ์ปจํธ๋กค๋ง ์์ต๋๋ค.
์๋ง๋ WinUI 3.0์ ๋ฒ์๋ฅผ ๋ฒ์ด๋์ง๋ง ์ด ํ๋ก์ ํธ์ ๋ ธ๋ ฅ๊ณผ ๊ฐ์ฅ ํ์คํ๊ฒ ์ฐ๊ฒฐ๋ฉ๋๋ค.
@jesbis @terrajobst @jevansaks
๋ฐ์คํฌํฑ, ๋ชจ๋ฐ์ผ(Droid, iOS) ๋ฐ ์น์์ ๋ ๋๋ง๋๋ UI ํ๋ ์์ํฌ๋ฅผ .NET Core๋ก ๊ฐ์ ธ์ค๊ธฐ ์ํ Microsoft์ ๊ณํ์ ๋ฌด์์
๋๊น?
์ด์ ๋ํ ๋ถํ์ค์ฑ์ ์ค๋ซ๋์ ์ง์๋์ด ์์ต๋๋ค.
@weitzhandler , ๊ทธ๋ค์ ์ด๋ฏธ ๋ค์ ๋จ๋ฝ๊ณผ ํจ๊ป ๋ก๋๋งต์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
์น ๋ฐ ํฌ๋ก์ค ํ๋ซํผ ํ๋ ์์ํฌ๋ฅผ ์ํ ๊ธฐ๋ณธ Windows ๋์
WinUI 3์ ๋น๋ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ํ๋ ์์ํฌ ๋์ด ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, ์ฐ๋ฆฌ๋ WinUI 3์์ ์๋ก์ด ๊ณ ์ฑ๋ฅ C++ React Native Windows ๊ตฌํ์ ๊ธฐ๋ฐ์ผ๋ก ํ ๊ณํ์ ๋๋ค.
๊ฐ์กฐ๋ ๋ถ๋ถ์ธ "to build on"์ ์ ์ํ์ญ์์ค. ์์์ ๋งํ๋ฏ์ด ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๊ทธ ์์ ๊ตฌ์ถ๋๋ Windows๊ฐ ๋จผ์ ๋ ์ ์๋ ์ด์ ๋ ์์ต๋๋ค.
์ ๊ทธ๋ฆฌ๊ณ ๋์...
/me keep working on FluSharp
ํฉ๋ฆฌ์ ์ด์ง๋ง ์ด ํ๋ก์ ํธ๊ฐ ๋์ด์๋ ์ ๋๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋ชฉ์ด ๋ง๋ผ @MarkIngramUK , ์ฐ๋ฆฌ์ ์์์ ์ฉ์ํ์ญ์์ค. ๐
๋ค์ ๋จ๋ฝ์ผ๋ก
๋ง์ ๋ง์ํ์ง ์์ต๋๋ค. C# ๋ฐ .NET ๊ฐ๋ฐ์ xplat์ผ๋ก ๋ง๋ค๋ ค๋ MS์ ๋ช ํํ ์๋๋ ๋ฐํ์ง ์์ต๋๋ค. ์ด์์ฑ์ ์ํ๋ค๋ฉด HTML JS ๋ฐ CSS shi{๊ฐ C#๋ณด๋ค ๋ ๋์ ์ฅ๋น๋ผ๊ณ ๋งํ ์๋ ์์ต๋๋ค.
ํ์ฌ Xamarin ๋ฐ Xamarin Forms๋ Windows ์ธ๋ถ์์ C# ๋ฐ .NET Core ๊ฐ๋ฐ์ ์ํ Microsoft์ ์ด์ผ๊ธฐ์ ๋๋ค.
Windows์ฉ React Native๋ Javascript ์ฝ๋ ๋ฐ ๊ธฐ๋ณธ UI(WinUI 3.0 XAML ์ฌ์ฉ)์ฉ์ผ๋ก ์ ๊ณต๋ฉ๋๋ค.
ํ์ฌ Microsoft๋ WinUI 3.0์ XAML์ ๋ค๋ฅธ ํ๋ซํผ์ผ๋ก ๊ฐ์ ธ์ฌ ๊ณํ์ ๋ฐํํ์ง ์์์ต๋๋ค.
WinUI ํ๋ก์ ํธ๋ ๋จ์ผ ์ต์ XAML ํ๋ ์ ํ ์ด์ ํ๋ ์์ํฌ์์ Win32, WPF, MFC, UWP, .NET Core ๊ฐ๋ฐ ํ๋ ์์ํฌ๋ฅผ ํตํฉํ๋ ค๊ณ ํฉ๋๋ค.
๊ทธ ํ์๋ macOS, iOS, Android ๋ฑ๊ณผ ๊ฐ์ ํ๋ซํผ์์ WinUI 3.0์ฉ์ผ๋ก ์์ฑ๋ XAML์ ๋ ๋๋งํ๋ ๋ฐฉ๋ฒ์ ์ฐพ๋ ์์ ์ด ์งํ๋์ด์ผ ํ๋ค๊ณ ์๊ฐํ์ง๋ง ์์ง๊น์ง๋ ์์ ๊ฐ ์๋๋๋ค.
์ฌ๊ธฐ์์ WinUI 3.0 ์์ ์ด ์์๋๋ฉด ์คํ ์์ค๊ฐ ๋ ๊ฒ์ด๋ฏ๋ก ํ์ํ ๊ฒฝ์ฐ ํฅํ ํฌ๋ก์ค ํ๋ซํผ ์์ ์ด ๊ฐ๋ฅํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ถ๊ทน์ ์ผ๋ก ์ด๋ฌํ ๊ต์ฐจ ํ๋ซํผ ๊ฒฝ๋ก๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ Microsoft๊ฐ ์๋๋ผ ์คํ ์์ค ์ปค๋ฎค๋ํฐ์ผ ์ ์์ต๋๋ค.
.NET์ ๋นจ๊ฐ ๋จธ๋ฆฌ ์๋ถ์์์ธ F#์ ์ผ๋ฅ ์๋ฏผ์ผ๋ก ๋ง๋ค ๊ณํ์ด ์์ต๋๊น? ๊ทธ๋ฌ๋ฉด ์ฌ๋๋ค์ ๋๋ค์์ .NET ๊ฐ๋ฐ์๊ฐ 10ํผํธ ๊ธฐ๋ฅ์ผ๋ก F#์ ๋ง์ง์ง ์๋ ์ด์ ๋ฅผ ๊ถ๊ธํดํฉ๋๋ค.
ํ์ฌ Xamarin ๋ฐ Xamarin Forms๋ Windows ์ธ๋ถ์์ C# ๋ฐ .NET Core ๊ฐ๋ฐ์ ์ํ Microsoft์ ์ด์ผ๊ธฐ์ ๋๋ค.
์, Xamarin.Forms๋ macOS, GTK, UWP ๋ฐ WPF๋ก ์ด์๋๊ณ ์์ ์ ๋ชจ๋ ๊ณณ์์ ๋จธํฐ๋ฆฌ์ผ ๋์์ธ์ด ์ ์ฉ๋์ด ์ฌ์ค์ .NET UI Framework๊ฐ ๋์ง๋ง ๋๋ฌด ๋๋ฆฌ๊ณ ๋ฒ๊ทธ๊ฐ ์์ต๋๋ค. Microsoft๋ ์ด๋ป๊ฒ ์๊ฐํ๊ณ ์๋์ง ๊ถ๊ธํฉ๋๋ค. ๊ฐ๋ฐ์์ ๋ํด. ๋ฌธ์ ๋ชฉ๋ก๋ง ๋ณด์ธ์! ๋ณธ๊ฒฉ์ ์ธ ๊ฐ๋ฐ์ด ์์๋๋ฉด ๋ฒ๊ทธ๊ฐ ์ข์ฐ๋ก ๊ฐํ๋ฉ๋๋ค. WinUI๋ฅผ ํตํด ๋ง์นจ๋ด ๋ ๋์ ๊ฐ๋ฐ ๊ฒฝํ์ ํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
์ฌ: F#
๋ ๋์ F# ์ง์์ด๋ ์๋ก์ด ๋งํฌ์ ๊ธฐ๋ฅ๊ณผ ๊ฐ์ ๋ค๋ฅธ ์๋ก์ด ๊ธฐ๋ฅ์ด ์ค์ํ๋ค๊ณ ์๊ฐ๋๋ฉด ์ ๊ธฐ๋ฅ ์์ฒญ์ ์ด์ด ๋ณ๋๋ก ์ถ์ ํ ์ ์๋๋ก ํ์ญ์์ค!
์, ๋ณ๋๋ก ์ถ์ ๋๊ณ ๋ค์ ๋ฌด์๋๋ ๊ฒ์ ํญ์ F#์ ๋๋ค. UWP์ .NET Native๋ฅผ ์ดํด๋ณด์ญ์์ค. ๋ ๋ค F#์ ์ผ๋์ ๋์ง ์์์ผ๋ฉฐ ์ปค๋ฎค๋ํฐ ์ ์ฒด์์ ๋ชจ๋ ๊ฒ์ ํ์ ํด์ผ ํ์ต๋๋ค. ๐ 4๋ ์ด ์ง๋ ํ์๋ F#์ ์ฌ์ ํ โโ.NET Native์์ ์ง์๋์ง ์์ต๋๋ค.
F# ์ ์/์ง๋ฌธ์ ๋ํด ์ ์ฉ ๋ฌธ์ ๋ฅผ ๋ง๋ค์์ต๋๋ค.
https://github.com/microsoft/microsoft-ui-xaml/issues/740
์์ ๋กญ๊ฒ F# ํ ๋ก ์ ์งํํ์ธ์.
์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ๋ํ ํผ๋๋ฐฑ์ ์ ๋ ๋ฌด์ํ์ง ์์ต๋๋ค. ์ ์ฉ ๋ฌธ์ ๋ฅผ ๊ฐ๋ ๊ฒ์ ์ฐ๋ฆฌ๊ฐ ๊ทธ๊ฒ์ ๊ตฌ์ฑํ๊ณ ์ถ์ ํ๋ ๋ฐ ๋์์ด ๋ ๋ฟ์
๋๋ค.
ํ์ 3.0 ์ด์์ ์ํ ๋ก๋๋งต์ ์ด๋ป๊ฒ ๋ง์ถ ์ ์๋์ง ๋
ผ์ํ๊ณ ์์ผ๋ฉฐ ๊ฐ๋ฐ์ด ์งํ๋๋ฉด ์ ๋ฌธ์ ๋ฅผ ์
๋ฐ์ดํธํ ๊ฒ์
๋๋ค.
RE: ํ๋ซํผ ๊ฐ UI:
์ง๊ธ๊น์ง ์ ๊ธฐ๋ ์์ ๊ณผ .NET ๋ฐ Xaml์ ๋ํ ์ด์ ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
๋ชจ๋ ํผ๋๋ฐฑ์ ์ฃผ์ ๊น๊ฒ ๋ฃ๊ณ ์์ผ๋ฉฐ ์งํ ์ํฉ์ ๋ฐ๋ผ ์๊ฐ๊ณผ ์
๋ฐ์ดํธ๋ฅผ ๊ณต์ ํ ๊ฒ์์ ๋ค์ ํ ๋ฒ ๋ง์๋๋ฆฌ๊ณ ์ถ์ต๋๋ค.
ํ์ฌ ๋ก๋๋งต๊ณผ ๋์จ ๋ช ๊ฐ์ง ์ฌํญ์ ์ฌํ์ธํ๊ธฐ ์ํด:
WinUI๋ Windows์ฉ ๊ธฐ๋ณธ UI ํ๋ซํผ(.NET๋ฟ๋ง ์๋๋ผ ๊ธฐ๋ณธ ์ฑ ํฌํจ)์ด๋ฉฐ ์ด๊ธฐ 3.0 ๋ฒ์ ์์๋ ์ฃผ๋ก OS์ ๋ ๋ฆฝ์ ์ผ๋ก ๋ง๋ค๊ณ ๋ ๋น ๋ฅธ ๋ฆด๋ฆฌ์ค์์ ์คํ ์์ค ๊ฐ๋ฐ์ ์ค๋นํ๋ ๋ฐ ์ค์ ์ ๋๊ณ ์์ต๋๋ค. ์ฃผ๊ธฐ. ์ฐ๋ฆฌ๋ ๋ฒ์๊ฐ ์ฌํด ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ํ ์ ์์ ๋งํผ ์ถฉ๋ถํ ์คํ ๊ฐ๋ฅํ์ง ํ์ธํ๊ณ ์ถ์ต๋๋ค.
ํ์ฌ ์ฐ๋ฆฌ์ ๋ค๋ฅธ ๋จ๊ธฐ ๋ชฉํ ์ค ํ๋๋ WinUI๊ฐ Windows์์ ์ฌ์ฉํ๋ ๋ค๋ฅธ ํ๋ซํผ์ ๊ธฐ๋ณธ ๋์ ์ญํ ์ ํ ์ ์๋๋ก ํ๋ ๊ฒ์
๋๋ค. ์๋ฅผ ๋ค์ด ์ฐ๋ฆฌ๋ react-native-windows
- ๊ณ ์ฑ๋ฅ C++ React Native ๊ตฌํ๋ ๋ณด์ฅํ๊ธฐ ์ํด ๋
ธ๋ ฅํ๊ณ ์์ต๋๋ค. Windows์ฉ - WinUI ์ฌ์ฉ ๋ฐ WinUI ์ปจํธ๋กค์ ์ฌ์ฉํ์ฌ React Native ์ฑ์์ ๊ธฐ๋ณธ UI ๋ณด๊ธฐ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
์์ ์ ์งํ๊ฒ ์ต๋๋ค. ์ ๋ 2006๋ ์ WinForms์ ์์ฑํ ๊ธฐ๋ณธ Windows ๋ฐ์คํฌํ ์ฑ์ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ ์ง๊ธ๋ ์จ๋ผ์ธ์์ ํ๋งคํ๊ณ ์์ต๋๋ค.
์ด ์ฑ์ WPF, UWP๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๊ฑฐ๋ ๋ ์ ์ ์ธ Windows UI ๊ธฐ์ ์ ์ฌ์ฉํ ๊ณํ์ด ์์ต๋๋ค. ๋๋ Windows ๋ฐ๋ชจ๊ฐ ์ผ๋ง๋ ๋งค๋ ฅ์ ์ธ์ง ์ ๊ฒฝ ์ฐ์ง ์์ต๋๋ค. ๋ด๊ฐ ์ด ์ฑ์ ๋ค์ ์์ ํ๊ธฐ๋ก ๊ฒฐ์ ํ๋ค๋ฉด ๋ค์ ์ฃผ์ ๋ฒ์ ์ MacOS, Linux ๋ฐ Windows์์ ์คํํ ์ ์๋ ์ผ์ข ์ ๊ต์ฐจ ํ๋ซํผ ๊ตฌํ์ด ๋ ๊ฒ์ ๋๋ค.
ํ์ฌ๋ก์๋ Blazor + .NET Core + Electron์ฒ๋ผ ๋ณด์ผ ๊ฒ์ ๋๋ค.
@Mike-EEE๊ฐ ๋ช ๊ฐ์ง ์ข์ ์ ์ ์ง์ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. C# ๊ธฐ์ ์ ํ์ฉํ์ฌ ์ต๋ํ ๋ง์ ์ฒญ์ค์๊ฒ ๋ค๊ฐ๊ฐ ์ ์๊ฒ ํด์ฃผ๋ UX/ํ๋ซํผ์ ์ ๊ฐ ์ ํํ ๊ฐ๋ฅ์ฑ์ด ๋ ๋์ ๊ธฐ์ ์ ๋๋ค.
Microsoft๋ ๊ฐ๋ฐ์๊ฐ ๊ธฐ์กด ๊ธฐ์ ์ ํ์ฉํ์ฌ ์ฑ์ผ๋ก ๋ ๋ง์ ์ฒญ์ค์๊ฒ ๋ค๊ฐ๊ฐ ์ ์๋๋ก ํ๋ ๋ฐ ์ค์ ์ ๋์ด์ผ ํฉ๋๋ค. ๋๋ ๊ทธ๊ฒ์ด ์น๋ฆฌํ๋ ์ ๋ต์ด๋ผ๊ณ ์๊ฐํ๋ฉฐ ๊ฒ์์์ Microsoft๋ฅผ ์ ์งํ ๊ฒ์ ๋๋ค.
๋ฒฝ์ ์ ํ ๊ธ์ ์ด์ ์ฒด์ ์ํํธ์จ์ด๊ฐ ์ ์ ๋ ์ํ์ฒ๋ผ ๋์ด ๊ฐ๊ณ ์๋ค๋ ๊ฒ์ ๋๋ค. ์ฆ, ์ฌ๋๋ค์ ์ํ๋ OS๋ฅผ ์ ํํ๊ณ ์ฌ์ฉํ๋ ค๋ ์ฑ์ ์ป์ ์ ์์ต๋๋ค. ์ ์ธ๊ณ์ ์ํํธ์จ์ด ๊ณต๊ธ์ ์ฒด๊ฐ ๊ณ์ํด์ ํฌ๋ก์ค ํ๋ซํผ์ ์ด์ ์ ๋ง์ถ๋ฉด์ ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์ด๊ฒ์ด ๋ ๋ถ๋ช ํด์ง ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๊ฒฝ์ ํ์์ ์ํ์ ์์ ํ๊ฑฐ๋ ์ค์ง์ ์ธ ๋์ฒด ๊ฐ๋ฅ์ฑ์ด ์๋ ๊ฒฝ์ ์ ์ฌํ ๋๋ ์๋น์ค์ ๋๋ค. https://en.wikipedia.org/wiki/Commodity
Microsoft๋ ๊ฒฐ์ ํด์ผ ํฉ๋๋ค. ๊ฐ๋ฐ์ ๋๊ตฌ ์ด์ผ๊ธฐ์ ์ผ๋ถ๊ฐ ๋๊ธฐ๋ฅผ ์ํ๋๊ฐ? ์๋๋ฉด Microsoft๋ ์ ์ ๋ ์ ์ ์ฌ๋๋ค์ด ์ฌ์ฉํ๋ UX ์คํ์ ๋ฌด๋ค์ ํฉ๋ฅํ๊ฒ ๋ ์๋ก์ด Windows ์ ์ฉ UX ์คํ์ ์๋ฐฑ๋ง ๋ฌ๋ฌ๋ฅผ ํฌ์ํฉ๋๊น?
์ด ํ๋ก์ ํธ๋ Windows ๋ด๋ถ๊ฐ ์ด๋ป๊ฒ ์๋ํ๋์ง์ ๋ํ ํ๋ถํ ์ง์์ ๊ฐ์ง ํ์ด ์์ ํ๊ณ ์์ผ๋ฉฐ Mac ๋๋ Linux์์ ๋์ผํ ์ ๋๋ก ์ ๋๋ก ์๋ํ๋๋ก ํ๋ ๋ฐฉ๋ฒ์ ์์๋ด๋ ๊ฒ์ ๊ทธ๋ค์ด ์ฃผ์๋ฅผ ์ฐ๋งํ๊ฒ ํ ๊ฒ์ ๋๋ค.
ํ์คํ ํ๊ธฐ ํ๋ ํฌ์ง์ ์ ๋๋ค. ๊ทธ๋ฌ๋ ์๋๊ฐ ๋ฐ๋์์ต๋๋ค. ์ค๋๋ ์ ์ธ์์ 1995๋ ์ ์ธ์๊ณผ ๋งค์ฐ ๋ค๋ฆ ๋๋ค. ์ ๊ฐ ๋ณด๊ธฐ์๋ ๋ ๊ฐ์ง ์ต์ ์ด ์์ต๋๋ค.
Windows ์ด์์ผ๋ก ์ง์์ ํ์ฅํ๊ธฐ ์ํด ๋ ๋ง์ ์ฌ๋์ ๊ณ ์ฉํ ์ ์์ต๋๋ค.
๋๋ ํด๋น ํ์ ์ง์์ ์ฌ์ฉํ์ฌ Windows์์ ๋ ์ ์คํ๋๋๋ก ํ๋ซํผ ๊ฐ UI ์์ฉ ํ๋ก๊ทธ๋จ ํ๋ ์์ํฌ์ ๋ํ ํธํ์ฑ์ ํฅ์์ํค๋ Windows ๋ด๋ถ์ UX ๋ฐฐ๊ด์ ๊ตฌ์ถํฉ๋๋ค.
WSL์ด Windows์์ Linux๋ฅผ ์คํํ๋ ๊ฒ์ฒ๋ผ.
Windows ํ๋ซํผ ๊ฐ UX ํธํ์ฑ ์คํ ๋ฆฌ๋ฅผ ํฅ์์ํค๊ธฐ ์ํด ์ํํ ์ ์๋ ์์ ์ด ๋ง์ด ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์์ ํ ์๋ก์ด UX ์คํ์ ํฌ์ํ๊ณ ์ฐ๋ฆฌ ๋ชจ๋๊ฐ (๊ต์ฐจ ํ๋ซํผ ์ด์ผ๊ธฐ ์์ด) ์ ํํ๊ธฐ๋ฅผ ํฌ๋งํ๋ ๊ฒ์ ๊ฝค ํฐ ๋ฒ ํ ์ ๋๋ค. Windows ์ ์ฉ์ ์๋ก์ด UX ํ๋ ์์ํฌ๋ฅผ ๋ง๋๋ ์ด ์ต๊ด์ ๊นจ์ผ ํฉ๋๋ค.
๊ทธ๋ฅ ๋ด 2 ์ผํธ. :๋ ๊ฐ๋ฐฉ:
:horse_racing: :cowboy_hat_face: Lil Nas X - Old Town Road (๊ณต์ ์ํ) ft. Billy Ray Cyrus
@bchavez
Windows ์ ์ฉ์ ์๋ก์ด UX ํ๋ ์์ํฌ๋ฅผ ๋ง๋๋ ์ด ์ต๊ด์ ๊นจ์ผ ํฉ๋๋ค.
-- ๋ฟ๋ง ์๋๋ผ. Windows ์์ฒด์ ๋ด๋ถ XAML ์ด์์ฑ์ ๊นจ๋จ๋ฆฌ๋ ์ต๊ด์กฐ์ฐจ๋. WPF, Siliverlight, UWP ๋ชจ๋ ์์ฒด ํฌํฌ... ์ด๋ฌํ ์ข ๋ฅ์ ๋ฌธ์ ๋ ๊ฐ์ธ์ ์ผ๋ก ์์ผ๋ก ๊ณ์ ์ฌ์ฉํ๊ณ ์ถ์ ์ผ๋ฐ์ ์ธ Windows ๊ฐ๋ฐ ๋๊ตฌ์์ ์ ์ ๋ ๋ง์ ์ฌ๋๋ค์ ๋ฐ์ด๋ด๊ณ ์์ต๋๋ค. Windows ๊ฐ๋ฐ ๋๊ตฌ์ ํธ์๋ฐฑ์ด ๋ง์์๋ก C#์ ๊ด๋ จ์ฑ์ด ์ ์ ์ค์ด๋ค๊ณ ๋์๊ฒ ์ค์ํ ๊ฒ์ C#์ด ์ค์ํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
RE: ํ๋ซํผ ๊ฐ UI:
... WinUI๋ Windows์ฉ ๊ธฐ๋ณธ UI ํ๋ซํผ(_ .NET์ด ์๋ ๊ธฐ๋ณธ ์ฑ ํฌํจ _)์ด๋ฉฐ ์ด๊ธฐ 3.0 ๋ฒ์ ์ ๊ฒฝ์ฐ ์ฃผ๋ก OS์ ๋ ๋ฆฝ์ ์ผ๋ก ๋ง๋ค๊ณ ์คํ ์์ค์ ๋ง๊ฒ ์ค๋นํ๋ ๋ฐ ์ค์ ์ ๋ก๋๋ค. ๋ ๋น ๋ฅธ ๋ฆด๋ฆฌ์ค ์ฃผ๊ธฐ์ ๋ํ ๊ฐ๋ฐ. ์ฐ๋ฆฌ๋ ๋ฒ์๊ฐ ์ฌํด ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ํ ์ ์์ ๋งํผ ์ถฉ๋ถํ ์คํ ๊ฐ๋ฅํ์ง ํ์ธํ๊ณ ์ถ์ต๋๋ค.
Fluent/FabricWeb ์ปจํธ๋กค ์คํ์ผ๊ณผ ๋ ์ ์ผ์นํ๋๋ก WinUI 3.0๊ณผ ํจ๊ป ์คํ๋๋ WinForms, MFC, WPF ์ปจํธ๋กค์ ์๊ฐ์ ๋ชจ์์ ์ ๋ฐ์ดํธํ๋ ์์ด๋์ด์ +1์ ์ถ๊ฐํฉ๋๋ค.
ํ์คํ ๋ค๋ฅธ ์ปจํธ๋กค ํฌ๊ธฐ(WinRT XAML์ด ์๋ ๋ชจ๋ ๊ฒ์ UWP ์ปจํธ๋กค์ Compact ๋ฒ์ ๊ณผ ํด๋น ๋ฉํธ๋ฆญ๊ณผ ์ผ์นํด์ผ ํจ)๊ฐ ์์ง๋ง ์ผ๊ด์ฑ ์๊ณ ์ผ๊ด๋ ์ธ๋ จ๋ ๋ชจ์์ ๋๋ค.
WinForms์ WinUI 3.0 ์ข ์์ฑ์ ์ถ๊ฐํ๋ฉด ์ปจํธ๋กค์ด ๋ณ๊ฒฝ๋ฉ๋๋ค.
WinUI 3.0 WPF ์ฑ์ Fluent.Light.xaml ๋๋ Fluent.Dark.xaml ์ ์ด ํ ๋ง๋ฅผ ๊ฐ์งํ๊ณ ์ฌ์ฉํฉ๋๋ค.
@weitzhandler ๋น์ ์ ์ฌ์ ์ ์ดํดํฉ๋๋ค. ์ด ํฌ๋ก์ค ํ๋ซํผ GUI๋ฅผ ์ํํ๊ธฐ ์ํด JavaScript ๋ฐ ์ด์ ์ ์ฌํ ๊ฒ์ ๋ง์ง ํ์๊ฐ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ์ ์, ๊ฐ๋, ๋คํธ, ํ๋ฌํฐ๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ก์ ํธ๋ฅผ ์์ํ๋ ๊ฒ์ ์๊ฐ์กฐ์ฐจ ํ๊ธฐ ์ซ์ต๋๋ค.
Universal XAML์ ๊ฟ์ ์คํํ .NET 5๋ฅผ ํตํด ๊ณง ์๋ฃจ์
์ ์ป์ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. Microsoft XAML์ WIN, ์น, ๋ชจ๋ฐ์ผ, ๋ฐ์คํฌํฑ ๋ฐ IoT๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
Silverlight๋ ๋ง์ ์ฌ์ฉ ์ฌ๋ก์์ ๊ฑฐ์ ๊ทธ๋ ๊ฒ ํ์ต๋๋ค .
Windows ์ ์ฉ์ ์๋ก์ด UX ํ๋ ์์ํฌ๋ฅผ ๋ง๋๋ ์ด ์ต๊ด์ ๊นจ์ผ ํฉ๋๋ค.
WinUI 3.0์ ํ๋ซํผ ๊ฐ ์ง์์ ๊ธฐ๋ค๋ ค์ผ ํ๋ ๊ฒฝ์ฐ(๋ชจ๋ ํ๋ซํผ์์ ๋ถ๊ฐํผํ๊ฒ ์์๋จ) ๋ฆด๋ฆฌ์ค๋์ง ์์ต๋๋ค. WinUI๋ Windows์์ ๊ฐ์ฅ ๋ฎ์ ์์ค์ UI ํ๋ ์์ํฌ์ฌ์ผ ํ๋ฉฐ, ํฌ๋ก์ค ํ๋ซํผ ๊ธฐ๋ฅ์ ์ํ๋ฉด ๊ทธ ์์ ๋น๋(๋๋ React Native, Xamarin ๋ฑ ์ฌ์ฉ)ํฉ๋๋ค.
Windows ์ ์ฉ์ ์๋ก์ด UX ํ๋ ์์ํฌ๋ฅผ ๋ง๋๋ ์ด ์ต๊ด์ ๊นจ์ผ ํฉ๋๋ค.
WinUI 3.0์ผ๋ก ์๋ก์ด UI ํ๋ ์์ํฌ๋ฅผ ๋ง๋ค๋ ค๋ ๊ฒ์ด ์๋์ ๋ถ๋ช ํ ํ๊ณ ์ถ์ต๋๋ค.
์ฐ๋ฆฌ์ ์ด๊ธฐ ๋ชฉํ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๊ธฐ์กด ์ต์ ๊ธฐ๋ณธ ๊ธฐ์ (Windows 10 Xaml UI ๋ฐ ํฉ์ฑ๊ธฐ)์ OS์์ ๋ถ๋ฆฌํ๊ณ ๊ธฐ์กด ์ฑ ๋ชจ๋ธ(win32 ๋ฐ UWP), ์ธ์ด, ๊ธฐํ ํ๋ ์์ํฌ(์ฌ์ ํตํด) ๋ฐ Windows ๋ฒ์ ์์ ์๋ํ ์ ์๋๋ก ํ์ฌ ๊ธฐ์กด ๊ธฐ๋ณธ ๊ธฐ์ (Windows 10 Xaml UI ๋ฐ ํฉ์ฑ๊ธฐ) ์ฌ์ฉ์ ๋ํ ์ฅ๋ฒฝ์ ์ ๊ฑฐํฉ๋๋ค.
์์ง๋์ด๋ง ํ๋ก์ธ์ค๋ฅผ ์คํ ์์ค๋ก ์ ๋ฐ์ดํธ
WinUI 3.0์ ํ๋ซํผ ๊ฐ ์ง์์ ๊ธฐ๋ค๋ ค์ผ ํ๋ ๊ฒฝ์ฐ(๋ชจ๋ ํ๋ซํผ์์ ๋ถ๊ฐํผํ๊ฒ ์์๋จ) ๋ฆด๋ฆฌ์ค๋์ง ์์ต๋๋ค.
์ด๋ด... ์ ๋ง ๊ทธ๋ ๊ฒ ๋ฏฟ๋๋ค๋ฉด Flutter์ ๊ฐ์ ์ฑ๊ณต์ ์ธ ํ๋ ์์ํฌ๊ฐ ์๋ํ์ง ์๋๋ค๋ ๋ป์ ๋๋ค...
๋๋ Dart๋ ์ข์ํ์ง ์์ง๋ง ์งํํ๊ณ ์๊ณ ์ ๋ง ๋น ๋ฅด๊ฒ ๊ฒฌ์ธ๋ ฅ์ ์ป๊ณ ์๋ ๊ฝค ํ๊ฐํ๋ ์ ํ์ ์ถ์ํ์ต๋๋ค.
WinUI๊ฐ ๊ทธ๋ฅ ์๋์ฐ์ฉ์ด ๋ ๊ฒ ๊ฐ์์ ๋ต๋ตํ๋ค์...
.Net์๋ Blazor(ํด๋ผ์ด์ธํธ ๋ฐ ์๋ฒ ์ธก)๊ฐ ์๋ ์น์ฉ์ผ๋ก ์ป์ ๊ฒ์ฒ๋ผ .Net Core ํฌ๋ก์ค ํ๋ซํผ ๊ธฐ๋ฅ์ ์ฐ์์ฑ๊ณผ ์ผ์นํ๋ UI ํ๋ ์์ํฌ๊ฐ ํ์ํฉ๋๋ค.
ํ์ฌ๋ก์๋ ์ฌ์ ํ ์ง์ญ์ฌํ ์ฃผ๋์ ๋ ธ๋ ฅ์ ์์กดํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋๋ ๋น์ ์ ํ์ด @jesbis์์ ๋ฌด์์ ํ๋ ค๊ณ ํ๋์ง ์ดํดํฉ๋๋ค... ์ฐ๋ฆฌ ์ค ๋ง์ ์ฌ๋๋ค์ด .Net/C++/UWP/MFC/Windows์์ UI๋ฅผ ๋ณด๋ ๋ฐ ์ง์ณค์ต๋๋ค. ์ ์ธ๊ณ๊ฐ Windows์์๋ง ์คํ๋๋ _silo_' (ofc Apple ๋ฐ OSX ์ ์ธ) ๊ฐ๋ฐ์์๊ฒ ๋ ๋์ ๊ต์ฐจ ํ๋ซํผ ์๋ฃจ์ ์ ์ ๊ณตํ๋ ๋ฐ๋ ๋ฐฉํฅ์ผ๋ก ๊ฐ๊ณ ์์ต๋๋ค. React์ Rect-Native์ ๋ํด ์ธ๊ธํ ๊ฒ์ฒ๋ผ(์ฐธ๊ณ ๋ก ์ ๋ ๋ ๋ค ์ข์ํ์ง ์๊ณ ์งํํ๊ณ ์๋ค๊ณ ์ธ๊ธํ์ต๋๋ค).
๊ทธ๋์ ์ฐ๋ฆฌ๊ฐ ์ง๊ธ ๊ฐ์ง๊ณ ์๋ ๊ฒ์ Avalonia ๋๋ Uno์ ๊ฐ์ ์ปค๋ฎค๋ํฐ ์ฃผ๋ ์ด๋์ ํฐ๋ธ์ ๋ช ๋ฐฑํ ์ด์ ๋ก ๋งค์ฐ ๋๋ฆฌ๊ฒ ๋ฐ์ ํ๋ ๊ธฐํ ํ๋ ์์ํฌ(์: ๋ด๊ฐ ์ธ๊ธํ FluSharp)์ ๋๋ค...
์ ์ ์์ XAML๊ณผ ํฉ์ฑ๊ธฐ๋ฅผ Windows ์ฝ๋๋ฒ ์ด์ค์์ ๊บผ๋ด์ Windows ์ ์ฉ์ผ๋ก ๋ง๋๋ ๊ฒ๋ณด๋ค ๊ฐ์ ธ์์ ์ ์ ํ ์ถ์ํ๋ฅผ ๋ง๋ค์ด ์ฌ๋ฌ ํ๋ซํผ์์ ์๋ํ ์ ์๋๋ก ํ๋ ๊ฒ์ ๋๋ค. ์ฒ์์๋ Windows ์ ์ฉ์ด์์ง๋ง ์ปค๋ฎค๋ํฐ ์ฃผ๋์ ๋ ธ๋ ฅ์ผ๋ก Linux, OSX ๋ฐ ARM ์ฅ์น์์๋ ๋งค์ฐ ๋น ๋ฅด๊ฒ ์๋ํ๋ .Net Core์ ๋ง์ฐฌ๊ฐ์ง๋ก...
(๋ชจ๋ ํ๋ซํผ์์ ๋ถ๊ฐํผํ๊ฒ ์์๋จ) ํ๋ซํผ ๊ฐ ์ง์
ํ๋ซํผ ๊ฐ ๋์์ธ์ด UWP์ XAML UI์ Fluent Design์ ํต์ฌ ์ธก๋ฉด์ด๊ณ ํญ์ ๊ทธ๋ฌ๋ค๋ ์ ์ ๊ฐ์ํ ๋ ์ด๊ฒ์ด ๋ฌธ์ ๊ฐ ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ง ์์ต๋๋ค. Windows ๋ฒ์ ๊ฐ์ ์๊ฐ์ ๋์์ธ์ด ๋ค๋ฅธ ์ปจํธ๋กค์ด ๋ถ๋ช ํ ์์ต๋๋ค. ์ด๋ ์ํํ๊ฒ ์ฒ๋ฆฌ๋์ด ์ฅ์น์ OS์ ์ผ์นํ๋ ๊ธฐ๋ณธ UI๋ฅผ ์ป์ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, Acrylic ๋ฐ Reveal์ด ์ปจํธ๋กค์ ๋ด์ฅ๋์ด ์๊ณ , Pivots ๋ฐ NavigationViews์ ์ก์ผํธ ์์์ด ์์ต๋๋ค. ์ด๋ฌํ ๊ฒ๋ค์ Creator์ ์ ๋ฐ์ดํธ์๋ ๋ํ๋์ง ์์ง๋ง FCU ์ด์์์๋ ๋ํ๋ฉ๋๋ค. ๋ณ๊ฒฝ์ด ํ์ํ์ง ์์ต๋๋ค.
๋ถ๋ช ํ ์์ ํ ๋ค๋ฅธ OS์์ UI๋ฅผ ๋ ๋๋งํ๋ ๋ฐ์๋ ํจ์ฌ ๋ ๋ณต์กํ ๋ฐฐํ๊ฐ ์์ง๋ง ์ค์ ๋ก UI๋ฅผ ๋์์ธํ๋ ๊ด์ ์์ ๋ณด๋ฉด ๊ทธ ์ด๋ ๋๋ณด๋ค ์ทจํด์ผ ํ ์๋ก์ด ๊ณ ๋ ค ์ฌํญ์ด ์๋ค๊ณ ์๊ฐํฉ๋๋ค. UWP ๋ฐ WinUI๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๊ฐ์ฅ ํฐ ๊ด์ฌ์ฌ๋ ์ฅ๊ธฐ์ ์ธ ๊ณํ์ด ์ง์ ๋ฌด์์ธ๊ฐ ํ๋ ๊ฒ์ ๋๋ค. @jesbis์ ๋ต๋ณ์ ๋ฐ๋ฅด๋ฉด ์ง๊ธ์ ๋จ๊ธฐ์๋ง ์ง์คํ๊ณ ์๋ ๊ฒ์ผ๋ก ๋ณด์ด๋ฉฐ ์ฅ๊ธฐ ๊ณํ์ ์์ง ๋ ผ์ ์ค์ ๋๋ค.
๊ทธ๋งํผ ์ดํดํ ์ ์์ผ๋ฉฐ ๊ทธ๋ฌํ ํ๋ก์ ํธ์ ๋ฒ์๋ ์์ฒญ๋ฉ๋๋ค. ๋จ๊ธฐ ๊ณํ์ด ์๋๋ผ ์ต์ข ๊ณํ์ด๋ผ๋ฉด ์ถฉ๋ถํ ์ดํดํ ์ ์์๋ค. ์ฌ๊ธฐ์ ํฌ๋ช ์ฑ์ด ์ค์ํฉ๋๋ค. ๋ถ๋ช ํ ๋ฏธ๋ ์์ด ํ๋ซํผ์ ์ง์ํ๊ณ ์ถ์ดํ๋ ์ฌ๋์ ์๋ฌด๋ ์๋ค๋ ๊ฒ์ด ๋ถ๋ช ํฉ๋๋ค.
MS๊ฐ ์ ๋ฐ์ ์ผ๋ก ํฌ๋ก์ค ํ๋ซํผ์ ์ด์ ์ ๋ง์ถ๊ณ ์์์ด ๋ถ๋ช ํฉ๋๋ค. Fluent Design(ํ์ฌ iOS, Android ๋ฐ ์น์ ๋ํ ์์ ๊ฐ ์์), ๋ค๋ฅธ ํ๋ซํผ์ ์๋ง์ MS ์ ์ ์ฑ์์ ์ด๋ฅผ ๋ณผ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ๊ณต์ UI๋ ์ ๋ง ๊ทธ๋ฅ ํฐ ๋๋ฝ๋ ๋งํฌ์ ๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ด๋ฐ ์ผ์ด ์ผ์ด๋์ง ์๋ ๊ฒ์ด ๋๋ฌด ์ค๋ง์ค๋ฌ์ธ ๊ฒ์ ๋๋ค. ๋ง์ ์ฌ๋๋ค์ด MS์์ ๋ง๋ ๋ฒ์ฉ ์ฑ ํ๋ซํผ์ ์์ด๋์ด๋ฅผ ์ข์ํ๋ค๊ณ ์๊ฐํ์ง๋ง, ์ง์ํ์ง ์๋๋ค๋ฉด ์ง์์ด ์๋ฏธ๊ฐ ์์ต๋๋ค. ๊ทธ๊ฒ์ ๋ํ ์๋ฒฝํ ์๋ฃจ์ .
์์ ์... material.io ๋ฐ Cupertino์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ฐ๋ฆฌ๋ ์ ์ฐฝํ ๋์์ธ ์ธ์ด๋ฅผ ์ํด flutter์ "ํ ๋ง"๋ฅผ ์ค์ ํ ์ ์์ต๋๋ค(Google์์ ์ด๋ฏธ ๊ทธ๋ ๊ฒ ํ์ง ์๋ ๊ฒฝ์ฐ์๋ ๋๋์ง ์์ต๋๋ค!)...
๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ด ์ง์ ํ ํฌ๋ก์ค ํ๋ซํผ UI ํ๋ ์์ํฌ๊ฐ ๊ทธ๊ฒ์ ๋ํด ์ ๊ฒฝ ์ฐ์ง ์๊ณ Flutter์ฒ๋ผ ์๋ํ ๊ฒ์ด๋ผ๊ณ ๋งํ์ ๋์ ์์ ์ ๋๋ค... ๋๋ ์ฐ๋ฆฌ๊ฐ ๊ทธ๊ฒ์ ๋ํด ํํ์ ์ด ์๋ ๊ณณ์ ๋ณด์ง ๋ชปํฉ๋๋ค...
@weitzhandler ๋ค์ดํฐ๋ธ ์ฑ์ฉ HTML๋ ์ข์ํ์ง ์์ต๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๋๋ React ๐์ ํจ๊ป Electron์ ์ฌ์ฉํ ๊ฒ์ ๋๋ค.
๋๋ ์ฌ๊ธฐ์ ์ด์ ์ ์ด์ง ์๊ณ ๋์ ํฉ๋ฆฌ์ ์ ๋๋ค.
์ ๋ WinUI 3.0์ ์ ๋ง ๊ธฐ๋ํ๊ณ ์์ผ๋ฉฐ ์๋ก์ด C++/WinRT Windows ๋ฐ์คํฌํฑ ํ๋ก์ ํธ์ ์ฆ์ ์ฌ์ฉํ ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ 3.0 ์ดํ์ ๋ค์ ๋ฉ์ด์ ๋ฒ์ ์์๋ (Flutter ๋ฐํ์๊ณผ ๊ฐ์) WinUI ์ ํ๋ฆฌ์ผ์ด์ ์ ํธ์คํ ํ๊ธฐ ์ํ ์ด์ ๊ฐ๋ฅํ ๋ฐํ์์ด ๋์ ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ์๋น์์ LOB ์์ฉ ํ๋ก๊ทธ๋จ ๋ฐ Photoshop๊ณผ ๊ฐ์ ์์ฉ ํ๋ก๊ทธ๋จ์ ๊ฒฝ์ฐ GUI๋ ๊ฐ ํ๋ซํผ์์ ๋์ผํ ์ ์์ง๋ง ํต์ฌ์ ์ฑ๋ฅ ๋ฐ ์์ค ์ฝ๋ ์ฌ์ฌ์ฉ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ xlang ํ๋ก์ ํธ๋ ์ข์ ์์ด๋์ด์ด๋ฉฐ ๋ฏธ๋์ ์ข์ ์์์ ์ฝ์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ฌ๊ธฐ ์ฌ์ฉ์๋ค์ BUILD 2019 ์ดํ์ Win UI, Xamarin Form, UNO, Web Assembly๊ฐ ์ด๋ป๊ฒ ๊ฒฐํฉ๋ ์ ์๋์ง์ ๋ํด Scott Hunter์ ์ด์ผ๊ธฐ๋ฅผ ๋ฃ๋ ์๊ฐ์ ๊ฐ์ง ๊ฒ์ ์ ์ํฉ๋๋ค.
Xamarin Forms(XAML)์ UNO(XAML)๋ ๋ชจ๋ ํฌ๋ก์ค ํ๋ซํผ์ ๋ํ ๋น์ ์ผ๋ก ๋ง๋ค์ด์ก์ต๋๋ค. UNO์ ๊ฒฝ์ฐ(iOS, Android, ์น ์ด์ ๋ธ๋ฆฌ๋ฅผ ํตํ ์น์ฉ XAML ์ถ๊ฐ).
UWP๋ ์น, Android, iOS์ ๊ฐ์ Microsoft ์์ฝ์์คํ ์ ๋์ด์๋ ๋น์ ์์ด ๋ง๋ค์ด์ก์ต๋๋ค. ๋ชจ๋ ์ธ์์ ์ธ Fluent ๋์์ธ ๋ ธ๋ ฅ์ UWP์ ๋๋ฆฐ ์ฑํ์ผ๋ก ์ธํด ๊ฑฐ์ ์ฐจ์งํ์ง ์์ต๋๋ค.
@Mike-EE๊ฐ ์ง์ ํ๋ฏ์ด droid์ iOS์๋ 2~15์ต~์ด ์๊ณ Win10์๋ 9์ต์ด ์์ต๋๋ค. ๋๋ถ๋ถ์ ๊ฐ๋ฐ์๋ ์ฌ์ ํ WinForm ๋ฐ WPF์์ UWP๋ก ์ด๋ํ๋ ๊ฒ์ ๊บผ๋ฆฝ๋๋ค.
์์? ์์ ์ฉ ๋ฐ Microsoft์ UWP ์ปจํธ๋กค์ ์์ ํ์ง ์์ต๋๋ค !!!!! WinForm ๋ฐ WPF์ ๋น๊ต๋ฉ๋๋ค. ์ด๋ฌํ ์ ํ์ ๋๊ธฐ ์ํ Microsoft์ ๋ ธ๋ ฅ์ ์์ต๋๋ค. XAML Island ๋ ๊ฐ๋ฐ์๊ฐ winForm ๋ฐ WPF์์ UWP๋ก ์ ํํ๋ ๋ฐ ํ์ํ ๋๋ฝ๋ ๋ถ๋ถ์ด MICROSOFT์ BLIND SPOT ์ด ์๋ ํ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ง ์์ต๋๋ค.
์ด๋ฌํ ๋๋ฝ๋ UWP ์ปจํธ๋กค์ ์ฌ์ฉํ์ฌ ์ด์ Win UI๋ฅผ ์น์ฉ React Native๋ก ๊ฐ์ ธ์ค๋ ๋ฐ ์๋นํ ๋ ธ๋ ฅ์ ๊ธฐ์ธ์ด๊ณ ์์ต๋๋ค. ???? WinForm ๋ฐ WPF์์ UWP๋ก์ ์ ํ์ ์ํด ๋ก๋นํ ์ ์๋๋ก UWP์ ๋ํ ์ด๋ฌํ ๋๋ฝ๋ Win UI ์ปจํธ๋กค์ด ํ์ํฉ๋๋ค.
๊ทธ๋ฌํ ์ปจํธ๋กค ์ค ํ๋๊ฐ Diagram Control ์ ๋๋ค. ๋ชจ๋ ๋ฐ์ดํฐ ์ง์ฝ์ ๋น์ฆ๋์ค ์ฑ์๋ UWP์ ๋ํ ๋ค์ด์ด๊ทธ๋จ ์ ์ด๊ฐ ํ์ํฉ๋๋ค.
==> UWP UI๋ฅผ ๋ถ๋ฆฌํด์ผ ํ๋ ํ์์ฑ์ ์ดํดํฉ๋๋ค. ์ด๊ฒ์ iOS, Android, ์น๊ณผ ๊ฐ์ ๋ค๋ฅธ ํ๋ซํผ์ Fluent Design ๋ธ๋๋ฉ์ ์ ํํ๋ ๋ฐ์๋ง ์๋ฏธ๊ฐ ์์ต๋๋ค.
==> ๋ ๋์ 3D ๋ชจ๋ธ ์ ์ด ๋ฐ ๋ค์ด์ด๊ทธ๋จ ์ ์ด(2D/3D ๋ชจ๋) ์ ๊ณต์ ์ง์คํ์ญ์์ค.
๋๋ HOLOLENS ํฌ๋ฆฌ์์ดํฐ๋ธ 3D UI์ ๋ฏธ๋๋ฅผ ๋ณด๊ธฐ ๋๋ฌธ์ ๋ชจ๋ BCL์ด Windows์ ๊ธฐ๋ณธ๊ณผ ๋ณํฉ๋ ๋(์น ์ด์ ๋ธ๋ฆฌ ๋ฑ์ ๊ฒฝ์ฐ) NET5๋ฅผ ์ ์งํ๊ณ ๊ธฐ๋ค๋ฆฌ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ ๋๋ค.
์ด๋ฅผ ์ํด์๋ UWP๋ฅผ ์ํ 2d/3D Diagram Control ๊ณผ ๋จ์ํ ๋ชจ๋ธ์ ํ์ํ๋ ๊ฒ์ด ์๋๋ผ ๊ฐ๋ฐ์๊ฐ ๊ณจ๊ฒฉ/์ ์ ์ ๋๋ฉ์ด์ ์ ์ก์ธ์คํ ์ ์๋๋ก ํ๋ 3D ๋ชจ๋ธ ์ ์ด ๊ฐ ํ์ํฉ๋๋ค.
@jesbis UWP์ฉ Win UI์ ์ด๋ฌํ USP(๊ณ ์ ํ ํ๋งค ํฌ์ธํธ)์ ๋ ๋ง์ ์ฌ๋๋ค์ ํฌ์ ํ ๊ฒ์ ์ด๊ตฌํฉ๋๋ค.
@weitzhandler
์ด ๋ฌธ์ ๋ WinUI 3.0 ๋ก๋๋งต ์ ๋ํด ๋ ผ์ํ๊ธฐ ์ํด ์์ฑ๋์์ต๋๋ค.
@jesbis ๋ ๋ช ํํ ์ฑ๋ช ์ ๋ฐํํ์ต๋๋ค .
WinUI๋ Windows์ฉ ๊ธฐ๋ณธ UI ํ๋ซํผ(.NET๋ฟ๋ง ์๋๋ผ ๊ธฐ๋ณธ ์ฑ ํฌํจ)์ด๋ฉฐ ์ด๊ธฐ 3.0 ๋ฒ์ ์์๋ ์ฃผ๋ก OS์ ๋ ๋ฆฝ์ ์ผ๋ก ๋ง๋ค๊ณ ๋ ๋น ๋ฅธ ๋ฆด๋ฆฌ์ค์์ ์คํ ์์ค ๊ฐ๋ฐ์ ์ค๋นํ๋ ๋ฐ ์ค์ ์ ๋๊ณ ์์ต๋๋ค. ์ฃผ๊ธฐ. ์ฐ๋ฆฌ๋ ๋ฒ์๊ฐ ์ฌํด ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ํ ์ ์์ ๋งํผ ์ถฉ๋ถํ ์คํ ๊ฐ๋ฅํ์ง ํ์ธํ๊ณ ์ถ์ต๋๋ค.
์ฒ์ ๋ ๊ฐ์ ๋๊ธ์ ์ฃผ์ ์ ๊ดํ ๊ฒ์ด์์ต๋๋ค.
๋ค์ 6๊ฐ๋ ๋น์์ฐ์ ์ด๋ฉฐ ๊ฒฝ๋ฉธ์ ์ธ ํํ์ด๋ฉฐ Microsoft ์คํ ์์ค ํ๋ ๊ฐ๋ น ์๋ฐ์ ๊ฐ๊น์ต๋๋ค.
์ด๊ฒ์ Microsoft์์ ์์ฐ์ ์ด๊ณ ์ ๋ฌธ์ ์ธ ๋ํ๋ก ๋จ์ ์์ด์ผ ํฉ๋๋ค.
// ๋๋ ํ๋ฃจ ์ข ์ผ ์ด๋ค ๋จ์ ๋ฒคํธ๋ฅผ ๋ฃ๊ธฐ ์ํด ์ด ๋ํ๋ฅผ ๋ฐ๋ฅด๋ ๊ฒ์ด ์๋๋๋ค.
์ฌ๊ธฐ์๋ ๋ ๊ฐ์ง ๋ณ๋์ ํ ๋ก ์ด ์์ ์ ์์ง๋ง ์ฌ๊ธฐ์๋ ๋ช ๊ฐ์ง ํ๋ฅญํ ์๊ฒฌ์ด ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋๋ถ๋ถ์ ๋ด์ฉ์ด ์ด์ ์ ์ธ๊ธ๋์์ผ๋ฏ๋ก ์ด๋ง ์ค์ด๊ฒ ์ต๋๋ค.
.NET Core๋ ํ๋ฅญํฉ๋๋ค. ๋ง์นจ๋ด ์ฐ๋ฆฌ๋ ํ๋ฅญํ ๋๊ตฌ์ ๋ฉ์ง ์ธ์ด๋ก ๋ชจ๋ ํ๋ซํผ๊ณผ ์ ์ ์ ๋ชฉํ๋ก ์ผ์ ์ ์์ต๋๋ค.
๋๋ฝ๋ ์ ์ผํ ๊ฒ์ Blazor๋ฅผ ์ ์ธํ UI ์คํ์
๋๋ค(HTML/CSS๋ ํํธ์์ง๋ง). ์ต๋์ ๋น๊ต ๊ฐ๋ฅ์ฑ์ ์ํด ๋ฐ์คํฌํฑ ๊ฐ๋ฐ์๊ฐ ๋์ผํ ๊ธฐ์ , ๋๊ตฌ ๋ฐ ์ธ์ด(Xaml ๋ฐ C#)๋ฅผ ์ฌ์ฉํ์ฌ ์น ๋ฐ ๊ทธ ์ด์์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์
ํ ์ ์๋ ํ๋ ์์ํฌ๊ฐ ์์ผ๋ฉด ์ข์ ๊ฒ์
๋๋ค. Tbh, Silverlight๋ ๊ฑฐ๊ธฐ์์ ํ๋ฅญํ ์ผ์ ํ์ต๋๋ค. WinUI์ ํด๋น ํ๋ ์์ํฌ๊ฐ ํ์ํ์ง ํ์คํ์ง ์์ง๋ง ๋ด๋ถ์ ์ผ๋ก ๋ฌธ์ ๋ฅผ ์ ๊ธฐํ์ญ์์ค. ๊ธฐ๋ณธ์ ์ผ๋ก .NET ๊ฐ๋ฐ์๋ฅผ ์ํ Flutter์ ์น์ ๋์์ผ๋ก ํ๋ ๊ฒ์ด ๊ฐ์ฅ ํฐ ์ฅ์ ์ด ๋ ๊ฒ์
๋๋ค.
Xamarin์ด ํด๋น ํ๋ซํผ์ด ๋ ์ ์๋์ง ํ์คํ์ง ์์ง๋ง ๊ทธ๋ ๋ค๋ฉด Xaml์ด WinUI์ Xamarin์์ ๊ฐ๋ฅํ ํ ๋ง์ด ์ ๋ ฌ๋์ด ์๋์ง ํ์ธํ์ธ์.
์ด๋ฐ ์ผ์ด ์ผ์ด๋์ผ ํฉ๋๋ค. Windows ํ๋ซํผ์์ ๊ฐ๋ฅํ ์ต๊ณ ์ ๊ฒฝํ์ ๋ง๋ค๋ ค๋ฉด ํ๋์ ๊ณตํต Xaml ์คํ์ด ์์ด์ผ ํฉ๋๋ค. ์ด์์ ์ผ๋ก๋ ์ปจํธ๋กค ๋ฐ ๊ธฐ๋ฅ ์ธก๋ฉด์์ WPF์ ๋๋ฝ๋ ๊ฒฉ์ฐจ๊ฐ ์ฑ์์ ธ์ผ ํฉ๋๋ค.
Lite๊ฐ ๋ฑ์ฅํ๊ณ HoloLens์ ๊ฐ์ ๋งค์ฐ ํฅ๋ฏธ๋ก์ด ์๋ก์ด ํผ ํฉํฐ๊ฐ ๋์ค๋ฉด UWP๊ฐ UI ์ธก๋ฉด์์ ์ด์ ๋ํด ์ค๋น๋์ง ์์๋ค๊ณ ์ฃผ์ฅํ ์ ์์ต๋๋ค. ์, HoloLens์์ ์คํํ ์ ์์ด ์ข์ต๋๋ค. ํ์ง๋ง Unity๋ฅผ ์์ ํ ์ฌ์ฉํ์ง ์๊ณ ๋ 3D์ฉ์ผ๋ก ์ฑ์ ์ค์ ๋ก ์ต์ ํํ๋ ๋ฐฉ๋ฒ์ ๋ณด๊ณ ์ถ์ต๋๋ค.
WinUI๋ Xamarin๋ณด๋ค ํจ์ฌ ์์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ Microsoft Team์ Xamarin 4.0์ ๋ฐ์ด๋
๋๋ค...
์ ๋ ๊ฐ์ธ์ ์ผ๋ก Xamarin์ด Cross Platform์ ๊ฐ์ฅ ๋ฎ์ ๋ช
์นญ์ด๊ธฐ ๋๋ฌธ์ ๋ ์ข์ํฉ๋๋ค. ์์ผ๋ก SaaS์ฉ Native Apps์ ์๊ฐ ์ฆ๊ฐํ ๊ฒ์
๋๋ค.
Xamarin ์ธ์ ๋ช ๊ฐ์ง ๋์์ด ์์ต๋๋ค.
1) UNO ํ๋ซํผ์ ์์ฉํ๊ณ SkiaSharp๋ฅผ ์ฌ์ฉํ์ฌ ์น ๋ ๋๋ง์ ๋ง๋๋ ๊ฒ์ด ์ด๋ป์ต๋๊น?
2) @zezba9000 ๊ฒ์ ์์ง์ด ์์ํ๋ ๋ฐ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๊ฐ์ ๋ถ๊ฐ์ง๋ก ์ ๋ ๋๋ง ๋ฐฑ์๋๊ฐ ํ์ํฉ๋๋ค. ์ฌ์ค ์ด๋์ ๋ ์ธ์ ํฉ๋๋ค....
๋ค๋ฅธ ํฌ๋ก์ค ํ๋ซํผ ์๋ฃจ์ ๊ณผ ๋ฌ๋ฆฌ ๋ด๋ถ์ ๋น ์คํ ์์ค ์ฝ๋ ์ถ์ ์ด ์๊ธฐ ๋๋ฌธ์ Microsoft๊ฐ WinUI๋ฅผ ๋ ๋ง์ด ํธ์ํ ์ ์์ต๋๋ค. Xamarin, UNO์๋ UNIX ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์์ ์ ์์ต๋๋ค...
์ด์จ๋ ํ์ด ๋น์ ๊ณผ ํจ๊ป ํ ์ ์์ต๋๋ค.
์ถ์ : Github ์คํฐ์๋ Microsoft์์ ์ ๊ณตํ๋ฏ๋ก WPF/Winforms์ ํฌ๋ก์ค ํ๋ซํผ ํฌํฌ์ ๋ํด ์ผ๋ถ ์ฃผ๋ชฉํ ๋งํ Mac/Linux ๊ฐ๋ฐ์๋ฅผ ํ์ํด ์ฃผ์ญ์์ค.
@jkoritzinsky , WinUI ํ์ด WinUI 3.0 ์ด๋ฆ ๋ฐ๊พธ๊ธฐ์ ํจ๊ป ์ฃผ์ํด์ผ ํ ํ ๊ฐ์ง: .NET์ ํ๋ก์ ์ ๋ ์ ํ์ ์ด๋ฆ์ ๋ฐ๊พธ๋ฉด ํ๋ก์ ์ ์ด ์๋ํ์ง ์์ผ๋ฉฐ ๋ ์ด์ ์ถ๊ฐํ ๊ณํ์ด ์์ต๋๋ค. ์ ์ง ๊ฐ๋ฅํ ํ์ฅ ๊ฐ๋ฅํ ์์คํ ์ด ์๋๊ธฐ ๋๋ฌธ์). ๋ค์์ ์ฐ๋ฆฌ๊ฐ ๊ณํํ๋ ์ ํ ๋ชฉ๋ก์ ๋๋ค. https://github.com/dotnet/coreclr/blob/master/src/inc/winrtprojectedtypes.h
์ด๋ฌํ ์ ํ์ด ์๋ ๋ค๋ฅธ ์ ํ์ ๋ณ๊ฒฝํ๋ ค๋ฉด ์ฌ์ฉ์๊ฐ ๊ฐ์ฒด๋ฅผ ์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ ์ ๊ฐ์ฒด๋ก ๋ํํ๊ฑฐ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ ํ์ ๋ณต์ฌํด์ผ ํฉ๋๋ค. ํนํ
INotifyPropertyChanged
๋ฐINotifyCollectionChanged
์ ํ์ XAML ์์ผ๋๋์ ๊ด๋ จํ์ฌ ๊ด์ฌ์ด ์๊ณ ๋ค์ด์คํธ๋ฆผ ์ง์์ ์ ๊ณตํฉ๋๋ค.
๋๋ ๋์ํ๊ณ ๋น์ ์ด ์ด ๋ฌธ์ ๋ฅผ ์ ๊ธฐํ ๊ฒ์ ๊ธฐ์๊ฒ ์๊ฐํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋๋ ์ด๋ฌํ ์์ธก์ด ์ฝ๊ฐ ๋ถํํ ์ ์ด๋ผ๊ณ ์๊ฐํ๋ค๊ณ ๋ง๋ถ์ด๊ณ ์ถ์ต๋๋ค. ์ฐ๋ฆฌ๋ (System.IO API์ ๋ํด ์๊ฐํ๋ฉด์) ์๋ง๋ ์์ด์ผ ํ ๋ชจ๋ ๋จ์ผ API๋ฅผ ์์ํ์ง ์์ผ๋ฏ๋ก ์ด๋ฅผ ์์ ํ๊ฑฐ๋ ๋ค๋ฅด๊ฒ ์๊ฐํด์ผ ํฉ๋๋ค. ๋ง์์ ๋ ์ค๋ฅด๋ ํ ๊ฐ์ง๋ ์ ์ฌํ์ง๋ง ๋ค๋ฅธ ์ ํ์ ๋ค๋ฅธ ๋ค์์คํ์ด์ค์ .NET ์ ํ์ ์ถ๊ฐํ์ง ์๋ ๊ฒ์ ๋๋ค. ๋์ C++ ๊ฐ๋ฐ์๊ฐ System.ComponentModel.INotifyDataErrorInfo๋ ์ฌ์ฉํ ์ ์๋๋ก ํด์ผ ํฉ๋๋ค. ์ด๊ฒ์ ์ฐ๋ฆฌ๊ฐ C++/CLI์์ ์ํํ ์์ ์ด์ง๋ง ์์ C++ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ํด CLR์ ๋ก๋ํ ํ์๊ฐ ์์ต๋๋ค. ๊ทธ๊ฒ ๋ ํผ๋์ค๋ฌ์ธ์ง๋ ๋ชจ๋ฅด๊ฒ ์ง๋ง API ๊ณ์ธต์์ .NET ๋ฐ WinRT ๊ธฐ์ ์ ๊ทผ๋ณธ์ ์ด๊ณ ๊ทผ๋ณธ์ ์ธ ์ฐจ์ด์ ์ด ๋์ถ๋๋ ๊ฒ์ฒ๋ผ ๋๊ปด์ ธ์ ์ผ๊ด์ฑ์ด ์์ด์ง๋๋ค.
@meir-pletinsky. NET์ UWP XAML๋ก ์ฑ์ ๋ง๋๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ๋จ ํ๋์ ํ๋ ์์ํฌ์ ๋๋ค. ์ด๋ค ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์๊ฐ ์ฌ์ฉํ ์ ์๋ ํ ์คํธ ํ๋ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ์ํฉ๋๋ค.
์ด๊ฒ์ ๋์ด ์๊น์ง ์์ต๋๋ค. ์ฐ๋ฆฌ๊ฐ ๊ด์ฌ์ ๊ฐ๊ณ ์๋ C++ ๊ฐ๋ฐ์๊ฐ ์์ต๋๋ค. ์์์ ์ธ๊ธํ ๊ฒ์ฒ๋ผ .NET ์ปค๋ฎค๋ํฐ์ ํผ๋์ ์ผ๊ธฐํ์ง ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
@mdtauk , ์๋์, WinUI Desktop(์ด์ ์ Xaml Desktop)์ ์ฌ์ฉํ๋ฉด ์์ผ๋๋๋ฅผ ์ฌ์ฉํ์ง ์๊ณ Win32์ ํจ๊ป Xaml์ ์ง์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ด๊ฐ ๋ญ๊ฐ๋ฅผ ๋์น๊ณ ์์ง ์๋ ํ @meir-pletinsky๊ฐ .NET/C++๋ฅผ ์ธ๊ธํ๊ณ ์๋ค๊ณ ์๊ฐํฉ๋๊น?
@MarkIngramUK ์ฌ๊ธฐ์์ ๋ ๊ฐ์ง ๋ค๋ฅธ ํ๋ก์ ํธ์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. WinUI๋ Win32๋ฅผ ๋์ฒดํด์ผ ํฉ๋๋ค. ์ฌ๋๋ค์ ํฌ๋ก์ค ํ๋ซํผ ์๋ฃจ์ ์ ์๊ตฌํ๊ณ ์๋๋ฐ, ์ด๋ ํฉ๋ฆฌ์ ์ด์ง๋ง _this_ ํ๋ก์ ํธ๊ฐ ๋์ด์๋ ์ ๋๋ค๊ณ ์๊ฐํฉ๋๋ค.
์, ์ ์ ์ผ๋ก ๋์ํฉ๋๋ค! ๋์๊ฒ WinUI๋ ๊ฐ์ฅ ํ๋์ ์ด๊ณ ์ฑ๋ฅ์ด ๋ฐ์ด๋๋ฉฐ Windows์ฉ ์ต๊ณ ์ UI๋ฅผ ์ ์ํ๋ ๊ฒ์ ๋๋ค. Xamarin์ Microsoft์ ํฌ๋ก์ค ํ๋ซํผ ์คํ ๋ฆฌ์ฌ์ผ ํ๋ฉฐ WinUI๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ฐ์ ํด์ผ ํฉ๋๋ค.
@mdtauk
Fluent/FabricWeb ์ปจํธ๋กค ์คํ์ผ๊ณผ ๋ ์ ์ผ์นํ๋๋ก WinUI 3.0๊ณผ ํจ๊ป ์คํ๋๋ WinForms, MFC, WPF ์ปจํธ๋กค์ ์๊ฐ์ ๋ชจ์์ ์ ๋ฐ์ดํธํ๋ ์์ด๋์ด์ +1์ ์ถ๊ฐํฉ๋๋ค.
ํ์คํ ๋ค๋ฅธ ์ปจํธ๋กค ํฌ๊ธฐ(WinRT XAML์ด ์๋ ๋ชจ๋ ๊ฒ์ UWP ์ปจํธ๋กค์ Compact ๋ฒ์ ๊ณผ ํด๋น ๋ฉํธ๋ฆญ๊ณผ ์ผ์นํด์ผ ํจ)๊ฐ ์์ง๋ง ์ผ๊ด์ฑ ์๊ณ ์ผ๊ด๋ ์ธ๋ จ๋ ๋ชจ์์ ๋๋ค.
WinForms์ WinUI 3.0 ์ข ์์ฑ์ ์ถ๊ฐํ๋ฉด ์ปจํธ๋กค์ด ๋ณ๊ฒฝ๋ฉ๋๋ค.
WinUI 3.0 WPF ์ฑ์ Fluent.Light.xaml ๋๋ Fluent.Dark.xaml ์ ์ด ํ ๋ง๋ฅผ ๊ฐ์งํ๊ณ ์ฌ์ฉํฉ๋๋ค.
MS๊ฐ ์ด๋ฌํ ํ๋ ์์ํฌ์ ์๊ฐ๊ณผ ๋ฆฌ์์ค๋ฅผ ํฌ์ํ์ฌ ๊ธฐ๋ณธ Windows 10 ์ฑ์ฒ๋ผ ๋ณด์ด๊ฒ ๋ง๋๋ ๊ฒ์ ๋ณด๊ณ ์ถ์ง ์์ต๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ WinUI 3.0์ด ์์ ๊ฒ์
๋๋ค. WPF/WinForms ์ฑ์์ Windows 10 ๋ชจ์๊ณผ ๋๋์ ์ํ์ญ๋๊น? WinUI 3.0์ ์ฌ์ฉํฉ๋๋ค.
MS๋ ์ด์ ํ๋ ์์ํฌ๋ฅผ ๋ค์ ๋ฐฉ๋ฌธํ๊ธฐ๋ณด๋ค UWP/WinUI์ Win32 ๋์ ๊ฐ์ ๊ธฐ์กด(๋ฐ ์ฐจ๋จ) ๊ฒฉ์ฐจ๋ฅผ ์ค์ด๋ ๋ฐ ๋ฆฌ์์ค๋ฅผ ํฌ์ํด์ผ ํฉ๋๋ค. ํนํ WinUI๊ฐ Windows์ฉ ํ๋ ์ ํ
์ด์
ํ๋ ์์ํฌ๊ฐ ๋ ๊ฒ์ด๋ผ๋ ์ ์ ๊ฐ์ํ ๋...
WinUI์ ๋ํ ์ค๋ช ๊ณผ UI/UX์ ๋ํ Microsoft์ ์๋์ ๋ํด ๋ฌป๊ณ ์ถ์ต๋๋ค.
WinUI๋ Win32, ATL, MFC, WinForms, Silverlight(๋๋ ์๊ณ ์์), WPF, UWP ๋ฐ/๋๋ XAML ์์ผ๋๋๋ฅผ ๋ชจ๋ ๋์ฒดํฉ๋๊น(๊ฐ์์ ์ผ๋ก?)? ๋ณธ์ธ์ ์ด๋ฌํ ๊ธฐ์ ์ด ๊ณ์ ์กด์ฌํ๊ณ ์ผ์ ๊ธฐ๊ฐ ๋์ ๊ณ์ ์ง์๋ ๊ฒ์์ ์๊ณ ์์ต๋๋ค . ๋๋ ์ด๊ฒ์ด ๋ง์ดํฌ๋ก์ํํธ๊ฐ ๋งํ๋ "์์ผ๋ก์ ๊ธธ"์ด๋ฉฐ, (์๋ฅผ ๋ค์ด) WinForms์ WPF๋ฅผ Win32๋ MFC๋ฅผ ๊ณ ๋ คํ๋ ๊ฒ๊ณผ ๋์ผํ๊ฒ ๊ณ ๋ คํด์ผ ํ๋ค๋ ๊ฒ์ ๋ถ๋ช ํ ์ดํดํ๊ณ ์ถ์ต๋๋ค.
WinUI๋ UWP์์ ํ์๋ฉ๋๊น? (๋๋ ๋์ ์ผ๋ง๋ ์ ์ฌํฉ๋๊น?) WinUI๋ UWP, XAML Islands ๋๋ WPF์ ๋น๊ตํ์ฌ ์ผ๋ง๋ ์ ์ฌ(๋๋ ๋ค๋ฆ ๋๊น)ํฉ๋๊น?
์ ๋ฌธ์ ์ธ C# ๋ฐ C++ ๊ฐ๋ฐ์๋ก์ ์ ๋ WinForms๋ก ์์ ์ ์์ํ ๋ค์ WPF๋ก ์ฎ๊ฒผ๊ณ , WinForms์์ ๋น์ฆ๋์ค ๋ชฉ์ ์ ์ํ UI/UX๋ฅผ WPF์์ ํ ์ ์๋ ๊ฒ๋ณด๋ค ๋๋ต ๋ ๋ฐฐ ๋น ๋ฅด๊ฒ ๋์์ธํ ์ ์์๊ธฐ ๋๋ฌธ์ WinForms๋ก ๋ค์ ์ฎ๊ฒผ์ต๋๋ค. WPF๋ ํจ์ฌ ๋ ๋ง์ ์ ์ฐ์ฑ๊ณผ ์ฑ๋ฅ์ ์ ๊ณตํ์ผ๋ฉฐ ํจ์ฌ ๋ ์ข์ ๋ณด์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋๊ตฐ๊ฐ๊ฐ XAML์ ์๋์ผ๋ก ํธ์งํ๋ ๋์ Designer๋ฅผ ํตํด ์ธํฐํ์ด์ค๋ฅผ ํฐ์นํ์๋ง์ ๋ฐ์ํ๋ XAML ๋งน๊ธ๋ง์ ๋์ฐํ์ต๋๋ค. ์ด๋ค ๊ฒฝ์ฐ์๋ WinForms(๋์์ด๋ ์ฌ์ฉ)๊ฐ ์ ์ฌํ XAML ์์์ด๋ ์ปจํธ๋กค์ ์๋์ผ๋ก ๊ตฌ์ฑํ๋ ๊ฒ๋ณด๋ค ํจ์ฌ ๋ ๋น ๋ฆ ๋๋ค.
๊ฐ์ธ์ ์ผ๋ก ์ ๋ Microsoft ์ ํ์์ ์ฌ์ฉ ๊ฐ๋ฅํ๊ณ ๋์ผํ UI๋ฅผ ์ํฉ๋๋ค. ์ ์ฌํ ๋ฐฉ์์ผ๋ก Win32 ๋๋ .NET์์ ํ์ฉํ ์ ์๋ ํ๋ ์์ํฌ๋ ๋ชจ๋ Microsoft ๊ฐ๋ฐ์๋ฅผ ์ํ ์ผ๊ด๋๊ณ ํ๋์ ์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋ฏธํ๋ฉฐ ๋จ์ผ ๊ธฐ์ ์ ๋์์ผ๋ก ํ๋ ์ธ์ ์์ ์ผ๋ฐ์ ์ธ ์ง๋ฌธ๊ณผ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์์ ์๋ฏธํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ปจํธ๋กค์ ๋ํด ์ง๋ฌธํ ๋ Win32 ๊ฐ๋ฐ์ ๋๋ .NET ๊ฐ๋ฐ์์ ๋๋ต์ ๋์ผํฉ๋๋ค(๊ฑฐ์ ๋์ผํ์ง๋ ์๋๋ผ๋). ๊ทธ๋ ๊ฒ ํ๋ฉด "WinUI" ํ์ต์ด ์ฃผ์ด์ง ๊ฐ๋ฐ์์๊ฒ ์ด๋ ์คํ์๋ ์ ์ฉํ๊ฒ ๋ ๊ฒ์ด๋ฉฐ, ๊ฐ๋ฐ ์ค์ธ ์์น์ ๊ด๊ณ์์ด ์จ๋ผ์ธ ์ ๋ณด(StackOverflow ๋ฑ)์ ๋ํ ์ก์ธ์ค๊ฐ ํจ์ฌ ๋ ๊ฐ์น๊ฐ ์๊ฒ ๋ ๊ฒ์ ๋๋ค. Xamarin์ ์ฌ์ฉํ์ง ์์ง๋ง Xamarin์ด ์ด๋ฌํ ๋ฐ์์ทจ๋ฅผ ๋ฐ๋ฅด๋๋ก ๋ง๋ค ์ ์๋ค๋ฉด(WinUI์ ํ์ฅ์ผ๋ก?) ์์ ์ค๋ช ์ Windows ๊ฐ๋ฐ์๋ฟ๋ง ์๋๋ผ Android, iOS ๋ฑ์ ๋์์ผ๋ก ํ๋ ๊ฐ๋ฐ์์๊ฒ๋ ์ ์ฉ๋ ์ ์์ต๋๋ค.
์ด๋ค ์ข ๋ฅ์ ์์ฉ ํ๋ก๊ทธ๋จ์ WinUI๋ฅผ ์ฌ์ฉํ๊ฒ ๋ ๊น์?
WinUI์ ๋ํ ๋์ ์ดํด๊ฐ ์ ํํ๊ณ Win32, MFC, Forms, WPF ๋ฑ์ ๋์ฒดํ๋ "์์ผ๋ก์ ๊ธธ"์ด๊ณ ๋์ผํ ํ๋ ์์ํฌ๋ฅผ ๊ธฐ๋ณธ ๋๋ .NET ๊ฐ๋ฐ์ ์ฌ์ฉํ ์ ์๋ค๋ฉด ๊ธฐ๊บผ์ด ์ปดํฌ์ง์ ์ ๋์ฒดํ ๊ฒ์ ๋๋ค. ๋ด๊ฐ ์ง์ํ๋ ์์ฉ ํ๋ก๊ทธ๋จ์ _ ALL _์์. ํ๋ซํผ์ด๋ ์คํ์ ๊ด๊ณ์์ด ๋์ผํ๊ฒ ์๋(๋ฐ ๋์)ํ๋ ํ๋์ ์ด๊ณ ์ผ๊ด๋ UI? ๊ทธ๊ฒ์ด ์ฐ๋ฆฌ ๋ชจ๋๊ฐ ์ํ๋ ๊ฒ์ด ์๋๋๊น? WinForms ๋๋ WPF์์ ์์ ํ ๋ณ๋์ ๋ฐฉ์์ผ๋ก ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ๋ ๋์ Win32์์ ์ด๋ฒคํธ๋ฅผ ์ ๋ฌํ๊ธฐ ์ํด CreateWindowEx() ๋ฐ ๋ฉ์์ง ๋ฃจํ๋ฅผ ์คํํ๋ ๋ฐฉ๋ฒ์ ๋ชจ๋ ๊ธฐ์ตํ๊ณ ์ถ์ดํ๋ ์ฌ๋์ ์์ ๊ฒ์ ๋๋ค. "ํ๋"๋ฅผ ์ํ ์๊ฐ์ ๋๋ค. ๊ทธ๊ฒ์ด WinUI(3.0)๊ฐ ๋๊ธฐ๋ฅผ ์ง์ฌ์ผ๋ก ๋ฐ๋๋๋ค.
OS ํธํ์ฑ ๋ฐ ํ์ ์์ค ์ง์
WinUI๊ฐ OS์ ๊ตฌ์ฑ์ ๋ถ๋ฆฌํ๋ ๋ฐ ์ฃผ๋ ฅํ๊ณ ์๋ค๋ ์ ์ ์ข์๋ฐ, ์์ง Windows 10๋ ์ ๋ ๊ณ ๊ฐ์ด ์์ฒญ๋๊ฒ ๋ง์ต๋๋ค. ์ด๊ฒ์ด ๊ณจ์นซ๊ฑฐ๋ฆฌ๋ผ๋ ๊ฒ์ ์๋๋ค. ์ฐ๋ฆฌ ๋ชจ๋๋ ํ๊ฒ ๊ณ ๊ฐ์ด ์ต์ ๋ฒ์ ์ ์คํํ๊ธฐ๋ฅผ ๋ฐ๋ผ์ง๋ง, ์ด๋ ์ฐ๋ฆฌ ๋ชจ๋๊ฐ ๋งค์ผ ์ง๋ฉดํ๋ ์ค์ ๋ฌธ์ ์ ๋๋ค. ํ์ฌ ๋ชฉํ๋ก ํ๋ ๊ฐ์ฅ ์ค๋๋ ํ๋ซํผ์ด๋ผ๊ณ ์๊ฐ๋๋ 1703 ์ดํ์ ์ด์ ํ๋ซํผ์์ WinUI๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ ๊ฒ์ ๋ํด ์ด๋ค ๋ ผ์๊ฐ ์ด๋ฃจ์ด์ง๊ณ ์์ต๋๊น?
WinUI๋ฅผ ์ ์ ์ผ๋ก ์ฐ๊ฒฐ ๊ฐ๋ฅํ๊ฑฐ๋ ํฌํจ ๊ฐ๋ฅ(์: .NET Core/5)์ผ๋ก ๋ง๋๋ ๊ฒ์ด ์ต์ ์ ๋๊น? ์ฐ๋ฆฌ๋ Windows 8.1, Windows 8, Windows 7, ์ฌ์ง์ด Windows PE๊น์ง ๋ชฉํ๋ก ์ผ์์ผ ํ ๊ฒ์ ๋๋ค. ์ด๋ฌํ ์๊ตฌ ์ฌํญ์ผ๋ก WinUI๋ฅผ ์ด๋ป๊ฒ ์ฌ์ฉํ ์ ์์ต๋๊น?
@์ฌ๋ธ :
WinUI๋ UWP์์ ํ์๋ฉ๋๊น? (๋๋ ๋์ ์ผ๋ง๋ ์ ์ฌํฉ๋๊น?) WinUI๋ UWP, XAML Islands ๋๋ WPF์ ๋น๊ตํ์ฌ ์ผ๋ง๋ ์ ์ฌ(๋๋ ๋ค๋ฆ ๋๊น)ํฉ๋๊น?
WinUI 3.0์ ์ด๋ค ์๋ฏธ์์ Xaml ํ๋ซํผ, ๊ตฌ์ฑ ๋ฐ ์ ๋ ฅ์ ํฌํจํ์ฌ Windows 10/UWP์ UI ํ๋ซํผ ๊ตฌ์ฑ ์์์ ๋ค์ ๋ฒ์ ์ด ๋ ๊ฒ์ ๋๋ค. ๊ทธ๊ฒ์ ๊ทธ ์ฝ๋๋ฒ ์ด์ค์์ ์์ต๋๋ค.
๋ก๋๋งต์ ์ธ๊ธ๋ ์ฌํญ์ ์ ์ธํ๊ณ Windows 10/UWP Xaml ํ๋ซํผ API์ ๋งค์ฐ ์ ์ฌํด์ผ ํฉ๋๋ค. ์ฆ, ๋ค๋ฅธ ๋ฃจํธ ๋ค์์คํ์ด์ค, ๋ค๋ฅธ ๊ธฐ์ ๊ณผ์ ํผํฉ ๋ฐ ์ผ์น์ ๋ํ ๋ ๋์ ์ง์(์: UWP ๋์ win32 ์ฑ ๋ชจ๋ธ ์ฌ์ฉ) ๋ฐ ๋ช ๊ฐ์ง ์๋ก์ด ์ถ๊ฐ ๊ธฐ๋ฅ.
WinUI๋ Win32, ATL, MFC, WinForms, Silverlight(๋๋ ์๊ณ ์์), WPF, UWP ๋ฐ/๋๋ XAML ์์ผ๋๋๋ฅผ ๋ชจ๋ ๋์ฒดํฉ๋๊น(๊ฐ์์ ์ผ๋ก?)? ๋ณธ์ธ์ ์ด๋ฌํ ๊ธฐ์ ์ด ๊ณ์ ์กด์ฌํ๊ณ ์ผ์ ๊ธฐ๊ฐ ๋์ ๊ณ์ ์ง์๋ ๊ฒ์์ ์๊ณ ์์ต๋๋ค. ๋๋ ์ด๊ฒ์ด ๋ง์ดํฌ๋ก์ํํธ๊ฐ ๋งํ๋ "์์ผ๋ก์ ๊ธธ"์ด๋ฉฐ, (์๋ฅผ ๋ค์ด) WinForms์ WPF๋ฅผ Win32๋ MFC๋ฅผ ๊ณ ๋ คํ๋ ๊ฒ๊ณผ ๋์ผํ๊ฒ ๊ณ ๋ คํด์ผ ํ๋ค๋ ๊ฒ์ ๋ถ๋ช ํ ์ดํดํ๊ณ ์ถ์ต๋๋ค.
WinUI๋ Windows์ ๊ธฐ๋ณธ ์ฑ UI์ ๋ํ ์ฃผ์ ํ์ฑ ๊ฐ๋ฐ ๋ฐ ์งํ ์ํฉ์ ๋๋ค. ๋ํ Windows ์์ฒด์ ๊ธฐ๋ณธ Microsoft ์ฑ ๋ฐ ์ฅ์น์์ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค.
Xaml ์ฌ์ WinUI์ ์ผ๋ถ์ด๋ฉฐ WinUI๋ฅผ ์ฌ์ฉํ์ฌ ๊ธฐ์กด ์ฑ(์: WPF, WinForms)์์ ์ ๋ณด๊ธฐ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
ํ์ฌ ๋ชฉํ๋ก ํ๋ ๊ฐ์ฅ ์ค๋๋ ํ๋ซํผ์ด๋ผ๊ณ ์๊ฐ๋๋ 1703 ์ดํ์ ์ด์ ํ๋ซํผ์์ WinUI๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ ๊ฒ์ ๋ํด ์ด๋ค ๋ ผ์๊ฐ ์ด๋ฃจ์ด์ง๊ณ ์์ต๋๊น?
WinUI๋ฅผ ์ ์ ์ผ๋ก ์ฐ๊ฒฐ ๊ฐ๋ฅํ๊ฑฐ๋ ํฌํจ ๊ฐ๋ฅ(์: .NET Core/5)์ผ๋ก ๋ง๋๋ ๊ฒ์ด ์ต์ ์ ๋๊น? ์ฐ๋ฆฌ๋ Windows 8.1, Windows 8, Windows 7, ์ฌ์ง์ด Windows PE๊น์ง ๋ชฉํ๋ก ์ผ์์ผ ํ ๊ฒ์ ๋๋ค. ์ด๋ฌํ ์๊ตฌ ์ฌํญ์ผ๋ก WinUI๋ฅผ ์ด๋ป๊ฒ ์ฌ์ฉํ ์ ์์ต๋๊น?
์ด์ ๋ํ ํผ๋๋ฐฑ์ ๊ณต์ ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. 3.0์ ๊ฒฝ์ฐ ๋ก๋๋งต์ ํ๋ซํผ(1703+, 8.1์์ ์ผ๋ถ ์ง์ ํฌํจ)์ ์ค์ ์ ๋ก๋๋ค. ์ฐ๋ฆฌ๋ ๊ฐ๋ฐ์๋ค์๊ฒ๋ ๋ค๋ฅธ ๋ฒ์ ์ ๊ณ ๊ฐ์ด ์๋ค๋ ๊ฒ์ ํ์คํ ์ดํดํ๊ณ ์์ผ๋ฉฐ, ์ด๋ ์ฐ๋ฆฌ๊ฐ ์์ผ๋ก ํ๊ฐํ ๊ณํ์ ๋๋ค.
๊ต์ฅํฉ๋๋ค. WinUI๊ฐ "์์ผ๋ก ๋์๊ฐ๋ ๊ธธ"์ธ ๊ฒ์ฒ๋ผ ๋ค๋ฆฌ๊ณ , ์ด์ ๋ํ ์ดํด๋ฅผ ๊ฐ์ํ ๋ ์ ๊ฐ ํฅ๋ถ๋๋ค๊ณ ๋งํ๋ ๊ฒ์ ์ ์ ๋ ํํ์ด ๋ ๊ฒ์ ๋๋ค.
ํนํ XAML ์์ผ๋๋๋ฅผ ํตํด ๊ฐ๋ฐ์๊ฐ WinUI๋ฅผ WPF ๋ฐ WinForms์ ๊ฐ์ ์ด์ ๊ธฐ์ ๋ก ํ์ฅํ ์ ์๋ค๋ ์ ์ ํ์์ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๊ฒ์ ์ค๋๋(์ด) ํ๋ก์ ํธ๋ฅผ ์์ /ํ์ฅํ๋ ๋์ "์์ผ๋ก" ํ๋ฅญํ ๋ค๋ฆฌ์ ๋๋ค.
๊ต์ฅํฉ๋๋ค. WinUI๊ฐ "์์ผ๋ก ๋์๊ฐ๋ ๊ธธ"์ธ ๊ฒ์ฒ๋ผ ๋ค๋ฆฌ๊ณ , ์ด์ ๋ํ ์ดํด๋ฅผ ๊ฐ์ํ ๋ ์ ๊ฐ ํฅ๋ถ๋๋ค๊ณ ๋งํ๋ ๊ฒ์ ์ ์ ๋ ํํ์ด ๋ ๊ฒ์ ๋๋ค.
ํนํ XAML ์์ผ๋๋๋ฅผ ํตํด ๊ฐ๋ฐ์๊ฐ WinUI๋ฅผ WPF ๋ฐ WinForms์ ๊ฐ์ ์ด์ ๊ธฐ์ ๋ก ํ์ฅํ ์ ์๋ค๋ ์ ์ ํ์์ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๊ฒ์ ์ค๋๋(์ด) ํ๋ก์ ํธ๋ฅผ ์์ /ํ์ฅํ๋ ๋์ "์์ผ๋ก" ํ๋ฅญํ ๋ค๋ฆฌ์ ๋๋ค.
WinUI 3.0์ด ํฌํจ๋ WinForms, MFC ๋๋ WPF ํ๋ก์ ํธ๊ฐ ์์ฑ๋ ๊ฒฝ์ฐ Form/WPF Window/HWND Window์์ XAML Island๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๋ XAML ํ์ด์ง/์ปจํ ์ธ /์ฐฝ์ ๋ ๋๋งํ ์ ์๋ค๊ณ ์๊ฐํ๊ณ ์ถ์ต๋๋ค.
์์ XAML์ ์ฌ์ฉํ๊ฑฐ๋ ์ฌ์ ์ฌ์ฉํ์ฌ ํ๋ ์์ํฌ ์ ๊ณต ํ๋ฉด์ XAML์ ๋ฐฐ์นํ๋ ๊ธฐ๋ฅ์ WinUI 3.0์ ์ง์ ์ผ๋ก "๋ชจ๋ ๊ฒ์ ์ง๋ฐฐํ๋ ํ๋์ UI"๋ก ๋ง๋ค ๊ฒ์ ๋๋ค.
์ง์ ์ผ๋ก WinUI 3.0์ "๋ชจ๋ ๊ฒ์ ์ง๋ฐฐํ๋ ํ๋์ UI"๋ก ๋ง๋ค ๊ฒ์ ๋๋ค.
... ์๋์ฐ์์. ๐
WinUI 3.0์ ์ด๋ค ์๋ฏธ์์ Xaml ํ๋ซํผ, ๊ตฌ์ฑ ๋ฐ ์ ๋ ฅ์ ํฌํจํ์ฌ Windows 10/UWP์ UI ํ๋ซํผ ๊ตฌ์ฑ ์์์ ๋ค์ ๋ฒ์ ์ด ๋ ๊ฒ์ ๋๋ค. ๊ทธ๊ฒ์ ๊ทธ ์ฝ๋๋ฒ ์ด์ค์์ ์์ต๋๋ค.
๊ทธ ๋ฉ๋ชจ์์ @jesbis , WPF์ UWP ๊ฐ์ ํตํฉ์ด ์ด๋ป๊ฒ ์งํ๋ ๊ฒ์ธ์ง์ ๋ํด
๋ฌผ๋ก ์๋๊ฐ ์์์ง๋ง ๊ฐ๋ฐํ๋ ๋ฐ 2๋ ์ด ๋๊ฒ ๊ฑธ๋ ธ์ ์๋ ๋ถ๊ตฌํ๊ณ
๋ํ WPF ํ๊ทธ์์ ์ฌ์ฉํ ์ ์์๋ ๋ง์ ์๋น์ค๊ฐ UWP์์ ์ฌ์ฉ ๊ฐ๋ฅํ๊ณ ๊ตฌํ๋์ด์ผ ํฉ๋๋ค. ์๋ก์ด UWP ๊ธฐ๋ฐ WinUI 3.0 ๋งํฌ์ ์ด WPF์ ์์ ํ ์ผ์นํ๋๋ก ํ๊ธฐ ์ํ ๋ ธ๋ ฅ์ด ์ฌ๊ธฐ์ ์์ต๋๊น? ์ด๊ฒ์ด ์ด๋๊ฐ์ ์ค๋ช ๋์ด ์๋ค๋ฉด ์ฌ๊ณผํ์ง๋ง, ๋๋ ๊ทธ๊ฒ์ ๋ณด๊ธฐ ์ํด ์์ง ๋ฉ์์ง๋ฅผ ๊ตฌ๋ฌธ ๋ถ์ํ์ง ์์์ต๋๋ค(๊ทธ๋ฆฌ๊ณ ๋ด ์ดํด๋ฅผ ์์ /๋ณด์ํ๊ธฐ ์ํ ๋ชจ๋ ๋ฆฌ์์ค๋ฅผ ํ์ํฉ๋๋ค).
์ง์ ์ผ๋ก WinUI 3.0์ "๋ชจ๋ ๊ฒ์ ์ง๋ฐฐํ๋ ํ๋์ UI"๋ก ๋ง๋ค ๊ฒ์ ๋๋ค.
... ์๋์ฐ์์. ๐
์ ์ด๋ WinUI 3.0์ ๋ฆด๋ฆฌ์ค ์ฐฝ์์๋. XAML ๋ ๋๋ง์ ๋ค๋ฅธ ํ๋ซํผ์ผ๋ก ๊ฐ์ ธ์ค๋ ํ๋ก์ธ์ค์ ์์์ด ๋๊ธธ ๋ฐ๋๋๋ค...
WPF์ UWP ๊ฐ์ ํตํฉ์ด ์ด๋ป๊ฒ ์งํ๋ ์ง ๋ง์ํด ์ฃผ์ค ์ ์๋์ง ๊ถ๊ธํฉ๋๋ค. ํนํ, ๋ช ๋ ๋์ UWP์์ ์์ฒญํ ๋งํฌ์ ํ์ฅ๊ณผ ๊ฐ์ ๊ฐ๋ ์ ๊ฑฐ์ ์ฑ๊ณต์ ๊ฑฐ๋์ง ๋ชปํ์ต๋๋ค. [...] ์๋ก์ด UWP ๊ธฐ๋ฐ WinUI 3.0 ๋งํฌ์ ์ด WPF์ ์์ ํ ์ผ์นํ๋๋ก ํ๊ธฐ ์ํ ๋ ธ๋ ฅ์ด ์ฌ๊ธฐ์ ์์ต๋๊น?
@Mike-EEE WPF์ ์์ ํ ์ถฉ์ค๋๋ 3.0์ ๋ชฉํ๊ฐ ์๋๋๋ค. ๊ทธ๋ฌ๋ ์ฐ๋ฆฌ๋ ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ๊ฒฉ์ฐจ๋ฅผ ์ขํ๊ธฐ ์ํด ๋ง์ ์์ ํญ๋ชฉ์ ์ถ์ ํ๊ณ ์์ต๋๋ค(์: #741 ๋งํฌ์ ํ์ฅ ๊ฐ์ - ์ดํด๋ณด๊ณ ์ด๊ฒ์ด ๊ทํ์ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ๋์ง ์ฌ๋ถ์ ๋ํ ์๊ฒฌ์ ๋จ๊ฒจ์ฃผ์ธ์!) WPF(์: # 686 3D ๋ชจ๋ธ ์ง์).
WinUI์์ ์ฌ์ฉํ๊ณ ์ถ์/ํ์ํ WPF์ ๋ค๋ฅธ ํน์ ๊ธฐ๋ฅ์ด ์๋ ๊ฒฝ์ฐ ํด๋น ๊ธฐ๋ฅ์ ๋ํ ์๋ก์ด ๊ธฐ๋ฅ ์ ์ ๋ฌธ์ ๋ฅผ ์์ ๋กญ๊ฒ ์ด๊ฑฐํ๊ฑฐ๋ ์ต๊ทผ " WPF ๊ธฐ๋ฅ์ด WinRT XAML์ ์์ด์ผ ํจ " ๋ฌธ์ #719์ ๋๊ธ์ ๋จ๊ฒจ์ฃผ์ธ์. ์ฐ๋ฆฌ๋ ๋ฌดํํ ์์์ ๊ฐ์ง๊ณ ์์ง ์์ง๋ง ์ฐ๋ฆฌ ๊ณํ์์ ์ปค๋ฎค๋ํฐ์ ์๊ฒฌ์ ๋ฐ์ํ๋ ค๊ณ ํ์คํ ๋ ธ๋ ฅํ๊ณ ์์ต๋๋ค. ๋ชจ๋ ๊ฒ์ด ์คํ ์์ค๊ฐ ๋๋ฉด ๋๊ตฌ๋ ์ ์ฌ์ ์ผ๋ก ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๋ฐ ๋์์ ์ค ์ ์์ต๋๋ค.
๊ฒฉ๋ ค๊ฐ ๋ฉ๋๋ค. @jebis ๋,
๋ด ๋์ ๋๋ ๊ด์ฌ์ฌ๋ ์ ์ฒด WPF ์ถฉ์ค๋๊ฐ ๋ชฉํ๊ฐ ์๋๊ณ WPF ๋ด์์ WinUI๋ฅผ ํ์ฉํ๋ ๊ฒ์ด ๋ชฉํ์ธ ๊ฒฝ์ฐ WPF ์ฑํ๊ณผ ๋ง์ฐฐ์ ๋ถ๋ชํ๊ฒ ๋ ๊ฒ์ ๋๋ค. ์ฐ์ํ(๊ทธ๋ฆฌ๊ณ ๋ ์ฐฝ์ ์ธ) Xaml ๋ชจ๋ธ์ด ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ฆ, Xaml Islands์ ๋ช ๋ฐฑํ ๊ฐ์น ์ ์์ด ์๋ ๊ฒ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก WinUI3.0์ WPF์ ํตํฉํ๊ธฐ ์ํ ๋ช ๋ฐฑํ ๊ฐ์น ์ ์์ด ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ํ๋ฃจ๊ฐ ๋๋๋ฉด ํด๋ณดํ/์ด๋ฑํ/์ ๊ฐ๋ฐ๋ Xaml ๋ชจ๋ธ์ ๊ธฐ์กด์ ์ฐ์ํ Xaml ๋ชจ๋ธ๋ก ๊ฐ์ ธ์ค๋ ค๋ ๊ฒ์ฒ๋ผ ๋ณด์ผ ์ ์์ต๋๋ค. ์ด๋ ๋จ์ํ ์๋ฏธ๊ฐ ์์ต๋๋ค.
WinForms, MFC ๋ฑ์ ์ฌ์ฉ ์ฌ๋ก์ ๊ฒฝ์ฐ ์ด ์ ๊ทผ ๋ฐฉ์์ WinUI3.0์ ์ ํฉํฉ๋๋ค. ๊ทธ๋ฌ๋ WPF๋ฅผ ์ฌ์ฉํ๋ฉด MSFT ๋๋ ์ธ๋ถ ๊ณต๊ธ์ ์ฒด์ ๋ค๋ฅธ ์ด๋์ ํฐ๋ธ์ ๋น๊ตํ ์ ์๋ ์ฐ์ํ ํ๋ ์ ํ ์ด์ ๋ชจ๋ธ ๋ฐ ๊ฐ๋ฐ์/๋์์ด๋ ํจ๋ฌ๋ค์์ด ์์ต๋๋ค.
@Mike-EEE Scott Hunter์ ๋ง์ ๋ฐ๋ฅด๋ฉด "ํ๋์ BCL์ด ๊ทธ๋ค ๋ชจ๋๋ฅผ ์ง๋ฐฐ"ํ๋ ๋ชฉํ๊ฐ "๊ทธ๋ค์ ๋ชจ๋ ์ง๋ฐฐํ๋ ํ๋์ UI"๋ณด๋ค ๋ ๋์ ์ฐ์ ์์์ ์จ๋ค๋ ๊ฒ์ด ์๋ชป๋ ๊ฒ ๊ฐ์ต๋๋ค.
์น์ ํตํ ์น ์ด์ ๋ธ๋ฆฌ์ MONO ๊ธฐ๋ณธ Xamarin Forms XAML ๋ฐ UNO XAML์ AoC, Xamarin Forms XAML ๊ธฐ๋ฐ ์ฑ์ด ์๋ ๊ณตํต BCL๋ก ๋์ฒดํจ์ผ๋ก์จ ์น์ Uno XAML์ ์๋ ์ฑ๋ฅ์์ ๋ชจ๋ ์ด์ ์ ์ป์ ์ ์์ต๋๋ค.
์ด ์๋ ์ฑ๋ฅ์ ๋ค๋ฅธ ๊ธฐ์ (์: ํ๋ฌํฐ, ๋ฐ์ ๋ฑ)์์ ์ค๋ ์น์ดํ ๊ฒฝ์์ ๊ด์ ์์ ํฌ๋ก์ค ํ๋ซํผ์ฉ C#์ ํฌ์ํ๋ ๊ฒฝ๋ ฅ์ ๋ฏธ๋๋ฅผ ๊ฑฑ์ ํ๋ ๋ชจ๋ ์ฌ๋์๊ฒ ๋งค์ฐ ์ค์ํฉ๋๋ค.
๋ฐ๋ผ๊ฑด๋, .NET5 = ๊ทธ๊ฒ๋ค์ ๋ชจ๋ ์ง๋ฐฐํ๋ ๊ณตํต BCL์ ํฅํ ์ด ์ฌ์ ์์ XAML ํ์คํ๋ ํ๋ก์ธ์ค๋ฅผ ๋ฐ๋ผ ๋ถ๋ถ์ ์ผ๋ก ๋๋ ์์ ํ ์ฒ๋ฆฌ๋์ง๋ง .NET5์ ์ฃผ์ ๋ชฉํ๋ ์๋๋๋ค.
XAML ํ์คํ์ ํ์์ฑ ์ธ์ ๋ ๋ค๋ฅธ ์ฐ์ ์์๋ ๋ชจ๋ ํ๋ซํผ(๋ชจ๋ฐ์ผ, ๋ฐ์คํฌํฑ ๋ฐ ์น)์ ์ ์ฐฝํ ๋์์ธ์ ํตํด Microsoft ๋ธ๋๋ฉ์ ํ์ฐํ๋ ๊ฒ์ ๋๋ค. [๊ธฐ์ ์ ์ผ๋ก WinUI 3.0 ๋ก๋๋งต์ ๋ชฉ์ ์ ์ด์ ์ ๋ง์ถ๊ธฐ ์ํด ๋ช ๋ฒ์ด๊ณ ๊ฑฐ๋ญ ๋ฌป๊ณ ์๋ Win UI 3.0์ ํตํ ๋์ปคํ๋ง]
๊ฒฐ๊ตญ, Win UI๊ฐ ์์ฑํ๋ UWP๊ฐ .NET5๊ฐ ์ถ์๋ ๋ 2020๋ 11์๊น์ง ๋ชจ๋๋ฅผ ์ง๋ฐฐํ๋ ์ด ํ๋์ BCL์์ ์ค์ ๋ก ์ญํ ์ ํ๋ ๊ฒ ๋ํ ์ ์๊ฐ์๋ ๋์ ์ฐ์ ์์ ๋ชฉํ๊ฐ ์๋๋๋ค.
๋ง์ผํ ๊ด์ ์์ ๋ณผ ๋ ๋ถํํ๋ ์ฐ๋ฆฌ๊ฐ ๊น์ด ๊ด์ฌ์ ๊ฐ๊ณ ์๋ ๊ธฐ์ ๋ก ๋ฒ์ญ๋์ง๋ ์์์ง๋ง ์ ์ฐฝํ ๋์์ธ์ ํตํ Microsoft ๋ธ๋๋ฉ์ ์ ๋น์ฟผํฐ์ค ์ด๋ฉฐ ํด๋น ๋์์ธ์ ํ๋ณดํ๋ ์ฑ ์ ๋ชจ๋ ๊ณณ์์ ๋น ๋ฅด๊ฒ ์งํ๋ฉ๋๋ค.
์ด๊ฒ์ด ๋ด๊ฐ ๋ชจ๋ฐ์ผ ์กด์ฌ์ ๋ถ์กฑ์ผ๋ก ์ธํด "์์ฅ ์ ์ ์จ์ ๋ฐ๋ผ์ก๊ธฐ" ์ํ Microsoft์ ์ฅ๊ธฐ ์ ๋ต์ ๋ณด๋ ๋ฐฉ๋ฒ์ ๋๋ค.
์ด๊ฒ์ Hololens 2์ ๊ทธ ์ดํ์ ํจ์ฌ ๋ ํฐ ๊ฐ๋ฅ์ฑ์ด ์๋ค๋ ์ ์ ์ ์ธํ๊ณ ๋ ๋ถ๋ช ํฉ๋๋ค. ์ด๋ฅผ ์ํด WinUI 3.0์ด ํฌํจ๋ UWP ์ฑ์ 3D ๋ค์ด์ด๊ทธ๋จ ์ปจํธ๋กค ๋ฐ ๊ณ ๊ธ 3D ๋ชจ๋ธ ๋ทฐ์ด๊ฐ ์ ๊ณต๋๋์ง ํ์ธํด์ผ ํฉ๋๋ค.
์ฃ์กํฉ๋๋ค. ๋ด๊ฐ ๊ฐ์ง ์ ํ๋ ์๊ฐ์ BEST OF BEST TECHNOLOGY์ ์ฌ์ฉํ๊ณ ์ถ์ด์ ๊ณ์ ์ด ์์ ์ ์ถ์งํ๊ณ ์์ต๋๋ค. :-)
Microsoft๋ ๋ค์์ ์ํด Windows Community Toolkit ์ ์ง ๊ด๋ฆฌ์(์ผ๋ถ๋ MS์์ ์๋)์ ์ง์ ํ๋ ฅํ ๊ฒ์ ์ ์ํฉ๋๋ค.
๋ง์ง๋ง ํญ๋ชฉ๊ณผ ๊ด๋ จํ์ฌ ๋ค์๊ณผ ๊ฐ์ ์ ์์ ํฌํจํด์ผ ํฉ๋๋ค.
๋ง์ง๋ง์ผ๋ก Windows 10 ๋ฒ์ 1507 ๋ฐ 1607 LTSB๋ฅผ ์ง์ํด์ผ ํ๋ ๊ฒฝ์ฐ ์ํํ ์ ์๋ ์์ ์ ์๋ณํ๋ ๊ฒ์ด ์ค์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด๋ค์ W10์์ ์ง์๋๋ ๋ฒ์ ์ค ์ ์ผํ๊ฒ 2๊ฐ์ง ๋ฒ์ ์ผ๋ก ์ถ์๋ ์์ ์ด๋ฉฐ WinUI 3.0์ ๋ฆด๋ฆฌ์ค ์์ ์ ํธํ๋์ง ์์ต๋๋ค.
์๋๋ ํ๋ก๋์ ํ์ง์ ์คํ ์์ค ์ฑ์ด๊ธฐ ๋๋ฌธ์ Windows 10 ๊ณ์ฐ๊ธฐ๋ก ํ๋ก์ธ์ค๋ฅผ ํ ์คํธํ ๊ฒ์ ์ ์ํ๋ ค๊ณ ํ์ต๋๋ค. ๊ทธ๋ฌ๋ ๋๋ ์ด ์ฑ์ด 6-7๋ ๋์ 1507 & 1607 LTSB์์ ์คํ๋์ด์ผ ํ๋ค๋ ๊ฒ์ ๊นจ๋ฌ์์ต๋๋ค. ํนํ ์๊ท๋ชจ ์ปค๋ฎค๋ํฐ ํ๋ก์ ํธ์ ๊ฒฝ์ฐ ์ด๋ฌํ ์ ํ์ ์ฑ์ ์ง์ํ๋ ๊ฒ๊ณผ ๊ด๋ จํ์ฌ ๋ถ๋ช ํ ์ฝ๊ฐ์ ๋ ผ์์ด ์์ ๊ฒ์ ๋๋ค. ๊ทธ๋ค์ด ์ ๋ง๋ก ์ด๋ฌํ ์ง์์ ํ์๋ก ํ๋ค๋ฉด, ๊ทธ๋ ๊ฒ ํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๋ช ํํ ์ฅ๊ธฐ ์ ๋ต์ด ์ ๊ณต๋์ด์ผ ํฉ๋๋ค.
์ฌ๊ธฐ ๋๊ธ์์ ์ ์ ์๋ฏ์ด ์ปค๋ฎค๋ํฐ์๋ WinUI์ ํฅํ ๋ฆด๋ฆฌ์ค์ ๋ํ ๋งค์ฐ ๊ธด ํฌ๋ง ๋ชฉ๋ก์ด ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋ณด๋ค ์ฅ๊ธฐ์ ์ธ ๊ณํ ์ค ์ผ๋ถ๋ฅผ ๊ณต๊ฐ์ ์ผ๋ก ๋ฌธ์ํํ์ฌ ์ฌ๊ธฐ์์ ๊ตฌ์ถ๋๊ณ ์๋ ์ถ์ง๋ ฅ๊ณผ ์ด์ ์ ์ค์ ๋ก ํ์ฉํด์ผ ํฉ๋๋ค.
์ด๋ฌํ ํญ๋ชฉ์ ๋๋ถ๋ถ์ v3.0์ ๋ฒ์๋ฅผ ๋ฒ์ด๋ฌ๊ธฐ ๋๋ฌธ์ WinUI 4.0/3.x/vNext์ ๋ํ ์ปค๋ฎค๋ํฐ ํผ๋๋ฐฑ ์์ง์ ์์ํ๋ ค๋ฉด ์กฐ๋ง๊ฐ ์๋ก์ด ๋ฌธ์ ๊ฐ ์์ฑ๋์ด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์๋ค๋ฉด WinUI ํ์ด ๊ณ ๋ คํ๊ณ ์๋ ์์ ์ ํ๊ณผ WinUI ๋ฐ/๋๋ ๋ค๋ฅธ MS ํ์ ์ฑ ์ ๋ฒ์๋ฅผ ๋ฒ์ด๋ ์์ ์ ์๋ณํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
๋ง์ง๋ง ์์ ์ ์ - ๋ค์ ์ฌํญ์ ์ ๋ง ๋ณด๊ณ ์ถ์ต๋๋ค.
์ด๋ฌํ ๋ฒ์๋ฅผ ๋ฒ์ด๋ ํญ๋ชฉ์ ์๋ณํ์ฌ ์ปค๋ฎค๋ํฐ๋ฅผ ์ ์ ํ ํผ๋๋ฐฑ ์ง์ ์ผ๋ก ๋ฆฌ๋๋ ์ ํ๊ฑฐ๋ ํด๋น ์์ญ์์ ์งํ ์ค์ธ ์์ ์ ์ค๋ช ํ ์ ์์ต๋๋ค.
๊ทธ ์ธ์๋ ๋ฒ์ ๋ด ํฌ๋ง ๋ชฉ๋ก์ด ํจ๊ป ๋ชจ์ด๊ธฐ ์์ํ ์ ์์ผ๋ฉฐ ์ปค๋ฎค๋ํฐ๋ ํฅํ WinUI์์ ๊ฐ์ฅ ์ํ๋ ๊ฒ์ ๋ํ ์ง์์ ํ์ํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด C#๊ณผ ๋์ผํ ํ๋ก์ ํธ ํ ํ๋ฆฟ์ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๊ฐ์ด F#์ด C#๊ณผ ๋๋ฑํ๊ฒ ์ง์๋๋ค๋ฉด ์ข์ ๊ฒ์ ๋๋ค.
WinUI(UWP vNext)์ Top, Left, Width, Height, StartupPosition, IsTopMost, AllowTransparency ๋ฐ Show() / ShowDialog() ๋ฉ์๋๊ฐ ์๋ WPF์ ๊ฐ์ ์ ์ ํ Window ๊ฐ์ฒด๊ฐ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
(_์ด ์ฐฝ์ด ํด๋ ์ ํ ๋ฐ IoT์ ๊ฐ์ ์์ ํ๋ฉด ์ฅ์น์์ ์ด๋ป๊ฒ ์๋ํ๋์ง(๋๋ ํ์ฉ๋๋์ง) ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค_)
@TonyHenrique 1903๋ ์ UWP๋ฅผ ์ํ ์๋ก์ด ์๋์ฐ API๊ฐ ์์ง๋ง ์์ง ๋๋์ง ์์์ต๋๋ค.
WinUI 3.0์ ๋ฒ์ ๋ด์์ XAML์ ๋ ๋๋ง์ ๋ค์ ์ดํด๋ณด๊ณ ์์ต๋๋ค.
WPF์ ๋ ๋๋ง์์ ํ ๋จ๊ณ ๋จ์ด์ง ๋๋์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
Windows Phone 7๊ณผ Windows Phone 8์ด ์ธ์ ๋ ๋๋ง ์์คํ ์ ๊ณต์ ํด์ผ ํ๋์ง ์ดํดํ ์ ์์ต๋๋ค. ํ๋ฉด ๊ธฐ์ ์ ์ ํ๊ณผ ๋ ๋๋ง ์๋๊ฐ ๋ ๋์ ์ฑ๋ฅ์ ์ํด ๋ฐ์ด๋ถ์ด๊ณ ์์์ต๋๋ค. ๊ทธ๋ฌ๋ WinUI๊ฐ ๋จผ์ ๋ฐ์คํฌํ์ผ๋ก ํผ๋ฒํ๊ณ ๋ ํฐ ๋์คํ๋ ์ด๋ก ์ธํด ์ด๋ฌํ ํ์ง์ XAML ๋ ๋ ์์ง์ผ๋ก ๋ณต์ํด์ผ ํ ๋์ผ ์ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ Hololens์ Xbox์ ๊ฐ์ ๊ฒ์ด ํน๋ณํ ๊ณ ๋ ค๊ฐ ํ์ํ ๊ฒฝ์ฐ, ์ง๊ธ์ฒ๋ผ ๋ ๋๋ง์ด ํ์ํ ์ฅ์น์์ ํ๋ซํผ ์์ค์์ ์ผค ์ ์๋ ์ฑ๋ฅ ๋ชจ๋๋ฅผ ์ ๊ณตํ์ง ์๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
f# ํ ํ๋ฆฟ์ ์ด๋ป์ต๋๊น?
.NET Framework 4.5 ์ด์์ ๋์์ผ๋ก ํ๋ ํ์ค Windows Forms ๋ฐ WPF ํ๋ก์ ํธ ํ ํ๋ฆฟ์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์๋ํ์ง ์๋ ํ WinUI ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฑํํ ์ ์์ต๋๋ค.
์ต์ Windows 10 ๋ฆด๋ฆฌ์ค ๋ฐ/๋๋ UWP ์์ฉ ํ๋ก๊ทธ๋จ๋ง ํ์ํ๋ฉด Fluent ๋์์ธ์ ์ฑํํ ์ ์์ต๋๋ค.
Microsoft๋ Windows Community Toolkit ์ ์ง ๊ด๋ฆฌ์(์ผ๋ถ๋ MS์์ ์๋)์ ์ง์ ํ๋ ฅํ ๊ฒ์ ์ ์ํฉ๋๋ค.
@kmgallahan
์ข์ ์ ์! ์ด๊ฒ์ ํ์คํ ๊ณํ์ ์์ต๋๋ค. ์ฐ๋ฆฌ ํ์ ์ข
์ข
Windows Community Toolkit ์ ์ง ๊ด๋ฆฌ์์ ๊ธด๋ฐํ๊ฒ ํ๋ ฅํ๋ฉฐ ํ
์คํธ ํ๋ก์ ํธ๋ก ์ฌ์ฉํ๊ณ ์ถ์ ๊ฒ ์ค ํ๋์
๋๋ค.
WinUI 3.0์ ๋ฒ์ ๋ด์์ XAML์ ๋ ๋๋ง์ ๋ค์ ์ดํด๋ณด๊ณ ์์ต๋๋ค.
@mdtauk
๋ ๋๋ง ๋ณ๊ฒฝ ์ฌํญ์ 3.0์ ๋ฒ์๋ฅผ ๋ฒ์ด๋ ๊ฐ๋ฅ์ฑ์ด ๋์ง๋ง ํ์ ๋ฆด๋ฆฌ์ค์ ๋ํ ์์ด๋์ด๋ฅผ ์ ์ฌ์ ์ผ๋ก ๋ค์ ๊ฒํ ํ ์ ์๋๋ก ๋ฌธ์ ๋ฅผ ์ฌ์ญ์์ค. ํฐ ์ด์ ์ Windows 8+์์ ๋ช ๊ฐ์ง ๋ ๋๋ง ๋ณ๊ฒฝ์ผ๋ก ์ด์ด์ง ๋ณดํธ์ ์ธ ์ฑ๋ฅ์ด์์ต๋๋ค. ์ฑ๋ฅ ๋ชจ๋ ์ค์์น๋ ํฅ๋ฏธ๋ก์ด ์์ด๋์ด์
๋๋ค.
f# ํ ํ๋ฆฟ์ ์ด๋ป์ต๋๊น?
@edgarsanchez , @khoshroomahdi
F#์ ๋ํ ๊ด์ฌ์ด ๋ง์์ง๋ ๊ฒ ๊ฐ์ต๋๋ค! F#์ ์ํ๋ ์ด์ ์ ๋ํด ๋ ๋ฃ๊ณ ์ถ์ต๋๋ค. F# ๋ฌธ์ ์์ ์ํ๋ ์ด์ ์ ์ฉ๋์ ๋ํด ์์ ๋กญ๊ฒ ์๊ฒฌ์ ๋ณด๋ด์ฃผ์ธ์. #740
.NET Framework 4.5 ์ด์์ ๋์์ผ๋ก ํ๋ ํ์ค Windows Forms ๋ฐ WPF ํ๋ก์ ํธ ํ ํ๋ฆฟ์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์๋ํ์ง ์๋ ํ WinUI ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฑํํ ์ ์์ต๋๋ค.
@jozefizso
Xaml ๊ตฐ๋๋ฅผ ์ดํด๋ณด์
จ๋์? ์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด WPF ๋ฐ Windows Forms ์ ํ๋ฆฌ์ผ์ด์
์์ WinRT Xaml์ ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก ์ต์ Xaml ๋ณด๊ธฐ/ํ์ด์ง๋ก ํฅ์์ํฌ ์ ์์ต๋๋ค.
https://docs.microsoft.com/windows/apps/desktop/modernize/xaml-islands
์ฐ๋ฆฌ๋ WinUI 3.0์ ์ฌ์ ํฌํจํ๊ณ Creators Update ์ด์(์ต์ํ Windows์ ๋ง์ง๋ง 5๊ฐ ๋ฒ์ ์ธ ์ต์ ๋ฒ์ )๊ณผ ์ญํธํ๋๋๋ก ๊ณํํ๊ณ ์์ต๋๋ค.
WinUI 3.0๊ณผ ํจ๊ป Creators Update ์ด์์์ ์์ ํ๋ Xaml Islands๊ฐ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ ์ ์์ต๋๊น?
๋ ๋๋ง ๋ณ๊ฒฝ ์ฌํญ์ 3.0์ ๋ฒ์๋ฅผ ๋ฒ์ด๋ ๊ฐ๋ฅ์ฑ์ด ๋์ง๋ง ํ์ ๋ฆด๋ฆฌ์ค์ ๋ํ ์์ด๋์ด๋ฅผ ์ ์ฌ์ ์ผ๋ก ๋ค์ ๊ฒํ ํ ์ ์๋๋ก ๋ฌธ์ ๋ฅผ ์ฌ์ญ์์ค. ํฐ ์ด์ ์ Windows 8+์์ ๋ช ๊ฐ์ง ๋ ๋๋ง ๋ณ๊ฒฝ์ผ๋ก ์ด์ด์ง ๋ณดํธ์ ์ธ ์ฑ๋ฅ์ด์์ต๋๋ค. ์ฑ๋ฅ ๋ชจ๋ ์ค์์น๋ ํฅ๋ฏธ๋ก์ด ์์ด๋์ด์ ๋๋ค.
์๋ฃ #768
XAML ์์ผ๋๋์๋ Windows 10, ๋ฒ์ 1903์ด ํ์ํ๊ณ Windows Community Toolkit ๋ผ์ด๋ธ๋ฌ๋ฆฌ์๋ ํ๋ก์ ํธ๊ฐ UWP์ฌ์ผ ํฉ๋๋ค. ๊ทธ๊ฑด ์๋ผ.
XAML ์์ผ๋๋์๋ Windows 10, ๋ฒ์ 1903์ด ํ์ํ๊ณ Windows Community Toolkit ๋ผ์ด๋ธ๋ฌ๋ฆฌ์๋ ํ๋ก์ ํธ๊ฐ UWP์ฌ์ผ ํฉ๋๋ค. ๊ทธ๊ฑด ์๋ผ.
WinUI 3.0์ Windows 7/8/8.1๋ก ์ด๋ํ์ง ์์ง๋ง ํด๋น OS๋ ๊ณง ๋จ์ข ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ํ์ฌ๋ก์๋ ์ฌ์ ํ WPF ๋ฐ WinForms๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ฌ์ฉ์๊ฐ Windows 10์ผ๋ก ์ด๋ํ ๊ฒฝ์ฐ์ ๋๋ค.
์ด ๊ฒฝ์ฐ ํ๋ก์ ํธ๋ Windows 10์ฉ UWP์ด๋ฏ๋ก WPF/WinForms๋ฅผ ์ง์ํ๋ ๊ฒ์ ์๋ฏธ๊ฐ ์์ต๋๋ค. ์ด๊ฒ์ ๋จ์ง ์์ ๊ทธ๋ฆฌ๋ฉฐ ๊ฐ๋ฐ์ ๋๊ตฌ๋ฅผ ์กฐ๊ฐํํ๋ ๊ฒ์ ๋๋ค.
@jozefizso UWP๊ฐ WPF ๋ฐ WinForms์ ๋ ์ ์ฌํ๋๋ก ๋ณ๊ฒฝ๋๊ณ ์๊ณ XAML UI๊ฐ WPF ๋ฐ WinForms ํ๋ซํผ์ ๊ฐ๊น์์ง๊ณ ์๋ค๊ณ ๋งํ๋ ๊ฒ์ด ๋ ์ ํํฉ๋๋ค.
์ ํ์ ์ธ ์๋๋ฐ์ค๋ฅผ ๋ฒ์ด๋๊ณ WPF ๋ฐ WinForms ํ๋ซํผ์ ์ฐ๊ฒฐํ ์ ์๋ ์ต์ XAML UI๊ฐ ํฌํจ๋ UWP ์ฑ.
์ด๊ฒ์ด ๋ด๊ฐ ์ดํดํ๋ ๋ฐฉ์์ ๋๋ค.
XAML ์์ผ๋๋์๋ Windows 10, ๋ฒ์ 1903์ด ํ์ํฉ๋๋ค.
์ด ๊ฒฝ์ฐ ํ๋ก์ ํธ๋ Windows 10์ฉ UWP๊ฐ ๋ฉ๋๋ค.
WinUI 3.0์์๋ ์์ผ๋๋๋ฅผ 1703 ์ด์์์ ์ฌ์ฉํ ์ ์๋๋ก ๊ณํํ๊ณ ์์ต๋๋ค(ํจ์ฌ ๋ ๋ค๋ก).
๋ํ UWP(๋น๊ณต์์ ์ผ๋ก "WinUI ๋ฐ์คํฌํฑ"์ด๋ผ๊ณ ํจ) ๋์ Win32 ์ฑ ๋ชจ๋ธ์์ WinUI๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ๋ ธ๋ ฅํ๊ณ ์์ผ๋ฏ๋ก UWP ์ฑ์ผ ํ์๋ ์์ต๋๋ค.
๋ํ UWP(๋น๊ณต์์ ์ผ๋ก "WinUI ๋ฐ์คํฌํฑ"์ด๋ผ๊ณ ํจ) ๋์ Win32 ์ฑ ๋ชจ๋ธ์์ WinUI๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ๋ ธ๋ ฅํ๊ณ ์์ผ๋ฏ๋ก UWP ์ฑ์ผ ํ์๋ ์์ต๋๋ค.
์ด๊ฒ์ ๋ด๊ฐ ๊ฐ์ฅ ํฅ๋ถ๋๋ ๊ฒ์ ๋๋ค. Windows์ ์ ์ฒด API๋ฅผ ์ฌ์ฉํ ์ ์๋ ๊ธฐ๋ณธ ์์ฉ ํ๋ก๊ทธ๋จ์ Win32์ด๋ Windows ๋ฐํ์์ด๋ ์๊ด์์ด Xaml์ ํตํด ์ฑ๋ฅ์ด ๋ฐ์ด๋ UI๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค.
๋ํ UWP(๋น๊ณต์์ ์ผ๋ก "WinUI ๋ฐ์คํฌํฑ"์ด๋ผ๊ณ ํจ) ๋์ Win32 ์ฑ ๋ชจ๋ธ์์ WinUI๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ๋ ธ๋ ฅํ๊ณ ์์ผ๋ฏ๋ก UWP ์ฑ์ผ ํ์๋ ์์ต๋๋ค.
์ด๊ฒ์ ๋ด๊ฐ ๊ฐ์ฅ ํฅ๋ถ๋๋ ๊ฒ์ ๋๋ค. Windows์ ์ ์ฒด API๋ฅผ ์ฌ์ฉํ ์ ์๋ ๊ธฐ๋ณธ ์์ฉ ํ๋ก๊ทธ๋จ์ Win32์ด๋ Windows ๋ฐํ์์ด๋ ์๊ด์์ด Xaml์ ํตํด ์ฑ๋ฅ์ด ๋ฐ์ด๋ UI๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค.
WinForms ์ฑ์ ์ฌ์ฉํ๊ณ ์ฝ๋ ์จ๊น์ ์ ์งํ๋ Form์ XAML ์ฐฝ์ผ๋ก ๋ฐ๊พธ๊ณ ๋ชจ๋ ๋ธ๋ฌ์์ XAML ์ปจํธ๋กค์ ์ก์ธ์คํ ์ ์์ต๋๋ค.
WPF๋ WinUI XAML์ ์ ์๋ฆฌ์ ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค ์ฝ๊ฐ ๋ ๋ณต์กํ์ง๋ง ์ ์ด๋ WPF ์ปจํธ๋กค์ WinUI ์ปจํธ๋กค๊ณผ ์ผ์นํ๋๋ก ์คํ์ผ์ ์ง์ ํ ์ ์์ต๋๋ค.
Xaml์ UI ํ๋ ์์ํฌ์ ์ด๋ฆ์ ๋๋ค. ๋ฐ๋ผ์ Windows.UI.Xaml...
Xaml์ UI ํ๋ ์์ํฌ์ ์ด๋ฆ์ ๋๋ค.
Xaml์ ๊ฐ๋ฐ์๊ฐ ์์ฉ ํ๋ก๊ทธ๋จ ๋ด์ ํ๋ ์ ํ ์ด์ ์ฅ๋ฉด๋ฟ๋ง ์๋๋ผ ์์ฉ ํ๋ก๊ทธ๋จ ์์ฒด๋ฅผ ๊ฐ๋ ฅํ๊ฒ ์ค๋ช ํ๊ณ ๊ตฌ์ฑํ ์ ์๋๋ก ํ๋ WPF์ ๊ธฐ์ ์ด์์ต๋๋ค. ์ฆ, UI ์์ _๋ฐ POCO_๋ฅผ ์ค๋ช ํ ์ ์์ต๋๋ค. .NET์ด๋ผ๋ฉด โโXaml๋ก ํ๋ถํ๊ฒ ๊ธฐ์ ํ๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ปจํ ์คํธ์ ๋ก๋ํ ์ ์์ต๋๋ค.
Xaml์ด eXtended Application Markup Language์ ์ฝ์๋ผ๋ ์ฌ์ค์ ์์ด๋ฒ๋ฆฌ์ง ์๋๋ก ํ์ญ์์ค. Xaml์ .NET _application_ ๊ตฌ์ฑ ์์๋ฅผ ์ฐ์ํ๊ณ ํจ์จ์ ์ผ๋ก ์ค๋ช ํ ์ ์๋ ๋งํฌ์ ์ธ์ด๋ผ๋ ์๋ฏธ์ ๋๋ค. ์ฃผ๋ก ์ฌ์ฉ์ ์ธํฐํ์ด์ค ์์๋ฅผ ์ค๋ช ํ๋ ๋ฐ ์ฌ์ฉ๋์์ง๋ง ์ค์ ๋ก๋ ๊ทธ๋ ๊ฒ ๊ฐ๋ฑ๋๊ฑฐ๋ ์ ํ๋์ง ์์์ต๋๋ค.
์ ๋ ๊ฐ์ธ์ ์ผ๋ก Xaml์ ์ฌ์ฉํ์ฌ ์ ์ฒด ์์ฉ ํ๋ก๊ทธ๋จ ๊ตฌ์ฑ์ ์ค๋ช ํ๊ณ App.config(์, Web.config๋ ํฌํจ)๋ฅผ ์ ๊ฑฐํ๊ณ ๊ต์ฒดํ๋ฉด์ ๋ณต์ก์ฑ์ ์ ๋์ ์ผ๋ก ํ์๋ก ํ๋ ์ธ๋ถ API์ ๊ฒฝ์ฐ๋ฅผ ์ ์ธํ๊ณ ๋ ๋ณต์กํ๊ฒ ๋ง๋ค์์ต๋๋ค.
Xaml์ UI๊ฐ _์๋_์ ๋๋ค. ๊ทธ๊ฒ๋ค์ ์์ ํ ๋ค๋ฅธ ๋ ๊ฐ์ง ๊ฐ๋ ์ด์ง๋ง ๋ถํํ๋ UWP์์ ์๋ ๋์ ๋ณํฉ๋์์ต๋๋ค. ๋๋ "Xaml"์ด๋ผ๋ ์ฉ์ด๊ฐ ์ด๋ฌํ ๋ ธ๋ ฅ์์ ํ๋ ค๋๋ ๊ฒ์ _์ฌ๋_ ํ๊ณ ์ถ์ง๋ง, ๊ทธ๋ฌํ ์กฐ์น๊ฐ ์ํ๋๋ ๊ฒ์ ๊ณ ์ฌํ๊ณ ๊ณ ๋ ค๋ ๊ฒ์ด๋ผ๊ณ ํ์ ํ์ง ๋ชปํฉ๋๋ค.
@charlesroddie ๋๋ ๋ช ๋ช ์ด ์ ๋ง๋ก ์์์ ์ด๋ผ๋ ๋ฐ ๋์ํฉ๋๋ค. WUXaml ๋ค์์คํ์ด์ค์์ ๋น๋กฏ๋ ๊ฒ์ ์คํ ์ถ์ ์ ๊ฒ์ฌํ๋ ๊ฒฝ์ฐ ์ค์ ๋ก๋ ๋ด๋ถ์ ์ผ๋ก DirectUI ๋ค์์คํ์ด์ค์ ์๋ ์ ์ ์ ๋๋ค. ๋ค๋ฅธ ์ด์ผ๊ธฐ๊ฐ ์์ ๊ฑฐ๋ผ๊ณ ์๊ฐํ๊ธฐ ๋๋ฌธ์ ๊ทธ ๋น์ ์ฃผ๋ณ์ ๋๊ตฐ๊ฐ๊ฐ ์์๋ค๋ฉด Win8์ ์ด์ผ๊ธฐ๋ฅผ ์๊ณ ์ถ์ต๋๋ค. ๋ ์ด์ด ํฉ์ฑ์ ์ํ DirectComp, ๋ถ๋๋ฌ์ด ์คํฌ๋กค ๋ฐ ๋ฌ๋ฒ ๋ฐด๋ฉ์ ์ํ DirectManipulation, ๊ทธ๋ฆฌ๊ณ ๋ชจ๋ ๊ฒ์ ํจ๊ป ๋์ด๋ด๊ธฐ ์ํด ๋งจ ์์ DirectUI๊ฐ ์๋ ๋ฒกํฐ ๊ทธ๋ํฝ ์์ง์ธ Direct2D/DirectWrite. ๊ทธ๋ฐ ๋ค์ ์ด๋ค ์ด์ ๋ก ์ผ๋ถ๋ Win7์ผ๋ก ๋ค์ ํฌํ ๋์์ผ๋ฉฐ Xaml ๋นํธ๋ง WinRT ์์คํ ์ ํตํด ๋ ธ์ถ๋์์ผ๋ฉฐ ๋ค๋ฅธ ๋ชจ๋ API๋ ์ํ์ ๋ณด๋ ๋ฐ ํ์ํ ์ด์ํ ํฉํ ๋ฆฌ ๋ฐ ํจํด์ด ์๋ ์ํธ ํต์ ์ธํฐํ์ด์ค๋ก ๋จ๊ฒจ์ก์ต๋๋ค. ๋ถ๋ฅด๋ค.
์ฌ์ค, ์ง๊ธ ์๊ฐํด๋ณด๋ฉด WUComposition์ด WinRT๋ฅผ ํตํด DirectComp์ DirectManipulation์ ๋ ธ์ถํ ๊ฒ์ฒ๋ผ(๋๋ ์ฌ์์ฑ์ธ ๊ฒฝ์ฐ) Direct2D/DirectWrite๊ฐ ์ฌ๊ธฐ์๋ ๊ณต์ ํ์ด ์๋ค๋ฉด ์ ๋ง ์ข์ ๊ฒ์ ๋๋ค. ๊ทธ๋ค์ ๋ชจ๋ ํจ๊ป ์๋ํ์ฌ ๋ค์ํ ์์ค์ ํ์ถ ํด์น์ ์ํ๋ ๊ฒฝ์ฐ ์ถฉ์ค๋์ ์ ์ ์ ์ ๊ณตํฉ๋๋ค. Win2D๋ ์ค์ ๋ก ๋ฐ์ฏค ๊ตฌ์์ก๊ณ ์ข์ API๋ ์๋๋๋ค.
Windows.UI.Composition์ ๋ด๊ฐ ๋ฏฟ๋ DirectComposition์ ์ฌ์์ฑ์ ๋๋ค. API๋ ๋น์ทํ์ง๋ง ๋์ผํ์ง๋ ์์ต๋๋ค.
๋ชจ๋ ๋ชจ๋ํฐ๊ฐ ๋ ์ด์ sRGB๋ผ๊ณ ๊ฐ์ ํ์ง ๋ง์ญ์์ค.
๋ชจ๋ ๋ ๊ฑฐ์ ์ฑ์ ์์์ sRGB๋ก ์ฒ๋ฆฌํ๊ณ ๊ตฌ์ฑํ๋ ๋์ ๊ฐ ๋ชจ๋ํฐ์ ๋ํด ๋ณํํฉ๋๋ค.
์ด๊ฒ์ ์ฝ๊ฐ ์ฃผ์ ์์ ๋ฒ์ด๋ ์ ์์ง๋ง ++, ๋น์ ์ ๋น์ ์ด ์ต์ํ์ ์์กด์ฑ๊ณผ WinUI ๋๋ ๊ฒฝํ์ ๋ฅผ ์ฌ์ฉ ํ ์ ์๋๋ก ๋จ์ง ์ธ -์์ด ์ฌ์ฉ ๊ฒฝํ์ ์ฒ๋ผ์ UI ์์คํ ์ ํ๋ํํ๋ ค๋ ๋น์ ์ด ์ด๋ฏธ C๋ก ์์ฑ๋ ๋๊ท๋ชจ์ Win32 appliation์ ๊ฐ์ ํ ์ ์์ ์ปจํธ๋กค ์ธํธ ๋๋ XAML ์์ด๋ ๊ฐ๋ฅ ํฉ๋๋ค.
๊ทธ๊ฒ์ ์ด๋ฏธ ๊ฐ๋ฅํ์ง๋ง ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ์ํด WinUI 3.0์ ๊ธฐ๋ค๋ฆด ํ์๊ฐ ์์ต๋๋ค.
๋ค์ด๋ฐ์ ๋ํ ํผ๋๋ฐฑ์ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ธ๊ธํ ๋ฐ์ ๊ฐ์ด ์ค๋๋ ํผ๋์ ์ผ์ผํฌ ์ ์๋ "Xaml ํ๋ซํผ" ๊ณผ "Xaml ์ธ์ด" (์์ฒด ์ฌ์/๋ฐฉ์ธ ํฌํจ) ์ฌ์ด์ ๊ตฌ๋ณ์ด ์์ต๋๋ค. ๋๋ ์ฃผ์ ๋ฆฌ๋ธ๋๋ฉ์ด ์นด๋์ ์๋ค๊ณ ์๊ฐํ์ง ์์ง๋ง ์ฐ๋ฆฌ๋ ๋ช ๋ช ๋ฐ ๋ค์์คํ์ด์ค์ ๋ํด ํ์คํ ๋ ผ์ํ๊ณ ์์ต๋๋ค.
Photoshop๊ณผ ๊ฐ์ ๊ธฐ์กด ์์ฉ ํ๋ก๊ทธ๋จ์ ํ๋ํํ๊ธฐ ์ํด XAML ์์ด C++ Win32 ์์ฉ ํ๋ก๊ทธ๋จ์์ Windows.UI.Composition์ ์ฌ์ฉํฉ๋๋ค. ๊ทธ๋ค์ ์ด๋ฏธ UI ์ํคํ ์ฒ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค.
์ด๊ฒ์ ์ฃผ์ ์์ ์ฝ๊ฐ ๋ฒ์ด๋ ์ ์์ง๋ง ์ด๋ฏธ C++๋ก ์์ฑ๋ ๋๊ท๋ชจ Win32 ์์ฉ ํ๋ก๊ทธ๋จ์ด ์๋ค๊ณ ๊ฐ์ ํ๊ณ UI ์์คํ ์ ํ๋ํํ๋ ค๊ณ ํ๋ฏ๋ก In- ์์ด Comp๋ง ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๊ฐ์ด ์ต์ํ์ ์ข ์์ฑ์ผ๋ก WinUI ๋๋ Comp๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์์ ์ปจํธ๋กค ์ธํธ ๋๋ XAML ์์ด๋ ๊ฐ๋ฅํฉ๋๋ค.
์ด์ ๋ํ ํผ๋๋ฐฑ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. Windows.UI.Composition์ ์ฌ์ฉํ๋ "ํ๋ ์์ํฌ๊ฐ ์๋" ์ฑ๊ณผ ์ ์ฌํ๊ฒ ์ค๋๋ ์ด๋ฏธ ํ ์ ์๋ WinUI 3์์ ์ด๊ฒ์ด ๊ฐ๋ฅํ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. WinUI NuGet ํจํค์ง ๋ฐ ์ข ์์ฑ์ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ๊ฒฐ์ ํ ๋ ์ด ์ ์ ์ผ๋์ ๋๊ฒ ์ต๋๋ค.
๋ชจ๋ ๋ชจ๋ํฐ๊ฐ ๋ ์ด์ sRGB๋ผ๊ณ ๊ฐ์ ํ์ง ๋ง์ญ์์ค.
๋ชจ๋ ๋ ๊ฑฐ์ ์ฑ์ ์์์ sRGB๋ก ์ฒ๋ฆฌํ๊ณ ๊ตฌ์ฑํ๋ ๋์ ๊ฐ ๋ชจ๋ํฐ์ ๋ํด ๋ณํํฉ๋๋ค.
@reli-msft ๋ณ๋์ ๋ฌธ์ ๋ฅผ ์ด์ด ์ถ์ ํ ์ ์์ต๋๊น?
@jesbis ๐ # 67
Apple์ ์ค๋ SwiftUI๋ฅผ ๋ฐํํ์ต๋๋ค...
๊ฐ๋ฐ์๊ฐ XAML ๋ฐ ์ฝ๋ ์จ๊น ๋์ ์ฝ๋๋ฅผ ์ฌ์ฉํ์ฌ ์ฑ์ ๋ง๋ค๋๋ก ์ ํํ ์ ์๋๋ก Xaml Direct ์ Visual Studio ํ ํ๋ฆฟ์ด ์ ๊ณต๋๋ค๋ฉด
๋๋ ์ฃผ์ ๋ฆฌ๋ธ๋๋ฉ์ด ์นด๋์ ์๋ค๊ณ ์๊ฐํ์ง ์์ง๋ง ์ฐ๋ฆฌ๋ ๋ช ๋ช ๋ฐ ๋ค์์คํ์ด์ค์ ๋ํด ํ์คํ ๋ ผ์ํ๊ณ ์์ต๋๋ค.
@jesbis ๊ฐ์ฌํฉ๋๋ค. ์ด ์ค๋ ๋์ ์ฐธ์ฌํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๋๊ตฐ๊ฐ๊ฐ ์ด๋ฐ ๊ฒ์๋ฌผ/๊ณต์ง์ฌํญ์ ์์ฑํ๊ณ ์ฃฝ์ ์ํ๋ก ๋๋ ๊ฒ ๊ฐ์ผ๋ฏ๋ก(๋๋ ๋ค๋ฅธ ์ฌ๋๋ค์ด ๊ด๋ฆฌ๋ฅผ ์ ๋๋ก ํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ), ์ค๋ ๋ ์์ฑ์๋ก์ ๊ทํ๊ฐ ์ฐธ์ฌํ๊ณ ์์ ๋ฟ๋ง ์๋๋ผ ๋ค๋ฅธ ์ฌ๋๋ค์ด ๋งํ๋ ๊ฒ. ํนํ ๋ค๋ฅธ ์ฌ๋๋ค์ด _me_์ผ ๋. ๐
1) ์ฌ์ฉ์ ์ธํฐํ์ด์ค ํ๋ซํผ๊ณผ 2) ์ธ์ด/๋งํฌ์ /์ค๋ช ๋ฉ์ปค๋์ฆ์ด ์์ต๋๋ค. ๋ด ๋นํ์ ๋ฐ์ธ์์ ๋๋ (์ฒซ ๋ฒ์งธ) ์ฌ์ฉ์ ์ธํฐํ์ด์ค ํ๋ซํผ์ ๋ํด ์ถฉ๋ถํ ๊ณต์ ๋ค์ธ ์ ์ด ์๋ค๊ณ ๋งํ ๊ฒ์ ๋๋ค. Windows ํ์ด ์ด ๋ฌธ์ ์ ๊ดํด ๋ง์ ํ๋ฅญํ ์์ ์ ์ํํ๋ค๋ ๊ฒ์ ์๊ณ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ทธ๊ฒ์ ๊ฐ์ธ์ ์ผ๋ก ๋์๊ฒ ๊ฒฐ์ฝ ๊ฑฑ์ ๊ฑฐ๋ฆฌ๊ฐ ๋์ง ์์์ต๋๋ค. ๊ทธ๊ฒ์ ๋์ (๊ทธ๋ฆฌ๊ณ ๋ค๋ฅธ ์ฌ๋๋ค์) ๋ถ๋ ธ์ ๊ฒฝ์ ์ ๋ถ๋ฌ์ผ์ผํค๋ ๋ ๋ฒ์งธ ์์ญ์ด๋ฉฐ, ์ฐ๋ฆฌ๋ ์ด๊ฒ์ ๋ช ๋ ๋์ ์๊ฒจ๋ UserVoice ๋ฌธ์ ์์ ๋ณผ ์ ์์ต๋๋ค.
์ด ๋ชจ๋ ๊ฒ์ ๋ด๊ฐ ์ด ๋ ์์ญ์ ๋ ์ ๋ถ๋ฅํ๊ธฐ ์ํ ๋ธ๋๋ฉ ๋ ธ๋ ฅ์ ๋ ๊ณ ๋ คํด ๋ฌ๋ผ๊ณ ์ ์ด๋ ์์ฒญ(๊ฐ์ฒญ, ์ฌ์ง์ด ๐ )ํ ๊ฒ์ด๋ผ๊ณ ๋งํ์ต๋๋ค. ์ด๋ฆ์ด "๋งํฌ์ ์ธ์ด"๋ฅผ ์๋ฏธํ๊ธฐ ๋๋ฌธ์ "Xaml Direct"๊ฐ ์ฌ๊ธฐ์ ํผ๋์ ์ ์ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ด๋ฆ์ด ๋ง์ต๋๋ค! -- ๊ทธ๋ฌ๋ ์ค์ ์ฌ์ฉ๋ฒ์๋ ๊ทธ๋ฐ ๊ฒ์ด ์์ต๋๋ค. ๋งค์ฐ ํผ๋์ค๋ฝ๊ณ ์คํด์ ์์ง๊ฐ ์์ผ๋ฉฐ ๋ธ๋๋์ ๊ฒฝ๊ณ์ ๋จ์ฉ์ ์ ์ํฉ๋๋ค.
Xaml Direct์ ๋ํด ๋งํ์๋ฉด @mdtauk :
๊ฐ๋ฐ์๊ฐ XAML ๋ฐ ์ฝ๋ ์จ๊น ๋์ ์ฝ๋๋ฅผ ์ฌ์ฉํ์ฌ ์ฑ์ ๋ง๋ค๋๋ก ์ ํํ ์ ์๋๋ก Xaml Direct์ Visual Studio ํ ํ๋ฆฟ์ด ์ ๊ณต๋๋ค๋ฉด ์ด๋จ๊น์?
CSharpForMarkup ๊ณผ ๊ฐ์?
Xaml Direct๋ณด๋ค ํจ์ฌ ๋ซ๊ณ ์ ์ ํ ์ด๋ฆ์ ์ ์ํฉ๋๋ค. ๋ฌผ๋ก _any_ ์ด๋ฆ์ด ๋ ๊ฒ์ ๋๋ค. ๐
Xaml Direct์ ๋ํด ๋งํ์๋ฉด @mdtauk :
๊ฐ๋ฐ์๊ฐ XAML ๋ฐ ์ฝ๋ ์จ๊น ๋์ ์ฝ๋๋ฅผ ์ฌ์ฉํ์ฌ ์ฑ์ ๋ง๋ค๋๋ก ์ ํํ ์ ์๋๋ก Xaml Direct์ Visual Studio ํ ํ๋ฆฟ์ด ์ ๊ณต๋๋ค๋ฉด ์ด๋จ๊น์?
CSharpForMarkup ๊ณผ ๊ฐ์?
Xaml Direct๋ณด๋ค ํจ์ฌ ๋ซ๊ณ ์ ์ ํ ์ด๋ฆ์ ์ ์ํฉ๋๋ค. ๋ฌผ๋ก _any_ ์ด๋ฆ์ด ๋ ๊ฒ์ ๋๋ค. ๐
@Mike-EEE https://docs.microsoft.com/en-us/uwp/api/windows.ui.xaml.core.direct
์ฝ๋์์ XAML UI๋ฅผ ์์ฑํ๋ ๋ฏธ๋ค์จ์ด์ฉ์ผ๋ก ์ค๊ณ๋์์ง๋ง XAML ํ์ผ ๋์ ์ฌ์ฉํ ํ ํ๋ฆฟ์ด ์๋ค๋ฉด ์ด๋ป๊ฒ ๋ ๊น์? ๊ทธ๋ฅ ๋๋ ์๊ฐ...
@mdtauk ๋ค! SwiftUI๋ Xaml์ฒ๋ผ ๋ณด์ด์ง๋ง ์ฝ๋๋ก ์ํ๋ฉ๋๋ค. ๋๋ React๊ฐ ํ๋ ๋ฐฉ์๋๋ก ์ฝ๋์ ์๋ ๋ชจ๋ ๊ฒ์ ๋ํ ์์ด๋์ด๋ฅผ ์ ๋ง ์ข์ํฉ๋๋ค. ๋์์ธ ํ์ผ์ ๋ถํดํ ๋ค์ ์ผ์ข ์ ์ฝ๋ ์จ๊น๊ณผ ์ฐ๊ฒฐํ๋ ๊ฒ์ ์ผ์ข ์ ๊ตฌ์์ด๋ฉฐ ์ ์ง ๊ด๋ฆฌ๊ฐ ์ด๋ ต๋ค๋ ๊ฒ์ ์์์ต๋๋ค.
์น๊ตฌ๊ฐ iPad Pro์ 120hz ๋์คํ๋ ์ด์ ์๋ํ๋ ค๋ฉด SwiftUI ๋ ์ด์์ ์์ง์ด ํ์ํ๋ค๊ณ ๋ฐฉ๊ธ ์ธ๊ธํ์ต๋๋ค. ๊ทธ๊ฒ์ด ๊ทธ๋ค์ด ์ง์คํ ๊ฒ์ ๋๋ค. ์ ๋ง ๋งค๋ ฅ์ ์ ๋๋ค.
๋๋ SwiftUI์์ ์๊ฐ์ ๋ฐ์ ๋ณ๊ฒฝ ์ฌํญ์ ๋ํ ํ ๋ก ์ด @eklipse2k8์ ๊ฐ ์ ์๋ ์๋ก์ด ๋ฌธ์ #804๋ฅผ ๋ง๋ค์์ต๋๋ค.
๋น์ฃผ์ผ Basic.๐์์ํ ํ ํ๋ฆฟ์ ์ถ๊ฐํ๋ ๊ฒ์ ์์ง ๋ง์ญ์์ค
WPF๊ฐ WinUI 3์ ํ์ ๊ณ์ธต์ _on_ ๊ตฌ์ถํ๋๋ก ํ์ญ์์ค!
@reli-msft WPF๋ฅผ ์ ๋ฐ์ดํธํ์ฌ ์ด๋ค ์ด์ ์ ์ป๊ณ ์ถ์ต๋๊น?
WinUI์์ ๋ณด๊ณ ์ถ์ ํน์ WPF ๊ธฐ๋ฅ์ด ์๋ ๊ฒฝ์ฐ "WinRT [WinUI]์ ์์ด์ผ ํ๋ WPF ๊ธฐ๋ฅ" ์ค๋ ๋์์ ๋ ๋ง์ ์ ๋ณด๋ฅผ ๋ฃ๊ณ ์ถ์ต๋๋ค. https://github.com/microsoft /microsoft-ui-xaml/issues/719
์๋ก์ด ๊ณ ์ ๋ฌธ์ #888์ ์ฐฌ์ฑํ์ฌ ๋ง๊ฐ
์ ๋ง ๊ธฐ๋๋ฉ๋๋ค. ํนํ ๋ฒ์ ๊ณผ ๊ด๋ จ๋ ๋ง์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๊ฒ์ ๋๋ค.
@weitzhandler [ 2019๋ 5์ 16์ผ
๋์๊ฒ ๋ชจ๋ ๊ธฐ์ ์ ์ธ๋ถ ์ฌํญ์ ๋ ์ค์ํฉ๋๋ค.
UWP, WPF ๋๋ ๋ชจ๋ Windows ์ ์ฉ ํ๋ ์์ํฌ๋ ์๋ฌด๋ฆฌ ํ๋ฅญํ๋๋ผ๋ ๋ชจ๋ ํ๋ซํผ(์ต์ํ Windows, Droid, iOS ๋ฐ ์น)์์ ์คํ๋์ง ์๊ณ ๋ชจ๋ ํ๋ฉด ํฌ๊ธฐ.
์ผ๋ฐ์ ์ผ๋ก WinUI ๋ฐ XAML์ ๋ฐ๋ผ ๋ค์๊ณผ ๊ฐ์ ์ธก๋ฉด์์ ๊ฐ์ ์ ๋ณด๊ณ ์ถ์ต๋๋ค. ๊ทธ ์ค ์ผ๋ถ๋ ์ ์์ ์ ์ฑ๊ฐ์๊ฒ ํ๊ณ ๋๋ฆฌ๊ฒ ํฉ๋๋ค.
๊ฐ์ฌํฉ๋๋ค!
ํจ์ฌ ๋ ๋ง์ ๋ด์ฅ ๋ณํ๊ธฐ
๋ฐฐ๋น์ง(Babbage)์ ๋ถ์ ์์ง๊ณผ ํ๋ง(Turing)์ ๋ณดํธ์ ๊ณ์ฐ ์ด๋ก ์ดํ, ๋ชจ๋ ์ปดํจํฐ๊ฐ ์คํํ ์ ์๋ ๋ชจ๋ ํ๋ก๊ทธ๋จ์ ์คํํ ์ ์๋ ๋จ์ผ ์ปดํจํฐ๊ฐ ๊ฐ๋ฅํ์ต๋๋ค. ํ๊ณ ์ถ์ ๋ชจ๋ ๊ณ์ฐ์ ์ํด ์ ์ปดํจํฐ๋ฅผ ๋ง๋ค์ด์ผ ํ๋ ์๊ฐ์ผ๋ก ๋์๊ฐ๊ณ ์ถ์ ๊ฒ์ ๋๋ค.
์ ์ฒด ๋ณํ๊ธฐ ์ฌ์ ์ ๋ฌด๋กํ๊ฒ ๋ฒ๋ ค์ผ ํฉ๋๋ค.
๋ถ์ธ ๋ณํ๊ธฐ ๊ฐ์ฒด
๋ถ์ธ์ ๋ถ์ธ์ ๋๋ค. ๋ค๋ฅธ ๊ฐ์ฒด๋ ๋ถ์ธ์ด ์๋๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ์ฒด์์ ๋ถ์ธ๋ก์ ์์ฐ์ค๋ฌ์ด ๋ณํ์ ์์ต๋๋ค. ์ ํ์ .Net์์ ์ค์ํ๋ฉฐ ์ ํ์ด ์ง์ ๋์ง ์์ ์ถ๊ฐ ์์คํ ์ ์ฌ์ฉ์์๊ฒ ๋ ธ์ถ๋์ด์๋ ์ ๋ฉ๋๋ค.
์, ๋ฐ์ธ๋ฉ๊ณผ ๊ฐ์ ๊ธฐ์กด์ ์ ํ์ด ์ง์ ๋์ง ์์ ์์คํ ๋ ๋ฒ๋ ค์ผ ํฉ๋๋ค.
์ ์ฒด ๋ณํ๊ธฐ ์ฌ์ ์ ๋ฌด๋กํ๊ฒ ๋ฒ๋ ค์ผ ํฉ๋๋ค.
๋น์ ์ ๋์์ ๋ฌด์์
๋๊น?
๋ณํ๊ธฐ์ ๋ํ ๋์ ๊ณ ์ถฉ์ ์ฌ์ฉ์๊ฐ ์ง์ ๋ค์ ์์ฑํ๊ฑฐ๋ NuGet์์ ์ ํํด์ผ ํ๊ณ ๋๋ฌด ์ฅํฉํ๋ค๋ ๊ฒ์
๋๋ค. ์ฐ์ ์ด๋ ๋ถ์ ๋ฑ๊ณผ ๊ฐ์ ํํ์ ํ์ฉํ์ง ์๋ ๊ฒ ์ธ์๋ ์ ์ฐํ์ง ์์ต๋๋ค.
๋ถ์ธ์ ๋ถ์ธ์ ๋๋ค. ๋ค๋ฅธ ๊ฐ์ฒด๋ ๋ถ์ธ์ด ์๋๋๋ค.
๋ง์ต๋๋ค. ํ์ง๋ง UI์ ๊ดํด์๋ ๋ณ๋ก ์ค์ํ์ง ์์ต๋๋ค.
๊ธฐ์กด์ ๊ฐ์ฒด ์ํ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํญ๋ชฉ์ ํ์/์จ๊ธฐ๊ธฐ๋ฅผ ์ํฉ๋๋ค. ๋ชจ๋ ๊ฒ์ด ์ ์ฉ ๊ฐ์์ฑ ์์ฑ์ ๊ฐ์ ธ์ผ ํ๋ ๊ฒ์ ์๋๋๋ค.
๋ฐ์ธ๋ฉ๊ณผ ๊ฐ์ ๊ธฐ์กด์ ์ ํ์ด ์ง์ ๋์ง ์์ ์์คํ ๋ ๋ฒ๋ ค์ผ ํฉ๋๋ค.
๋ญ? ์ฌ์ค ์ฅ์ ์ด ์๋ ๊ฒ ๊ฐ์์. V์ VM ๊ฐ์ ๋์จํ ๊ฒฐํฉ์ด ์ข์ ์ ์์ต๋๋ค.
๋ฐ์ธ๋ฉ๊ณผ ๊ฐ์ ๊ธฐ์กด์ ์ ํ์ด ์ง์ ๋์ง ์์ ์์คํ ๋ ๋ฒ๋ ค์ผ ํฉ๋๋ค.
V์ VM ๊ฐ์ ๋์จํ ๊ฒฐํฉ์ด ์ข์ ์ ์์ต๋๋ค.
์๊ท๋ชจ ํ๋ก์ ํธ์ ๊ฒฝ์ฐ ๋ง ๊ทธ๋๋ก ์ปดํ์ผ๋ฌ ์ง์์ ๋๋ ๊ฒ๋ณด๋ค ๋์จํ ๊ฒฐํฉ์ ๋ํ ๋ ๋์ ์ถ์ํ๊ฐ ์์ต๋๋ค. ์์ญ์์ ์๋ฐฑ ๊ฐ์ ๋ณด๊ธฐ๊ฐ ์๋ ๋๊ท๋ชจ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ ์ง ๊ด๋ฆฌํด์ผ ํ๊ณ ์ฌ๋ฌ ์ฌ์ดํธ์์ ์ฌ์ฉ๋ ์ ์๋ ๊ฒ์ ๋ฆฌํฉํฐ๋งํ๋ ค๋ ๊ฒฝ์ฐ ์ปดํ์ผ๋ฌ์์ ๋ฐ์ธ๋ฉ ๊ฒฝ๋ก์ ์ ํ์ฑ์ ํ์ธํ์ง ์๋ ๊ฒ์ ๊ฐ๋ฐ์ ๊ฒฝํ์ ์ฃผ์ ์ ํ์ ๋๋ค. ์ฐ๋ฆฌ ์ธ์ด์ ์ ํ ์์คํ ์ด ์๋ ๋ฐ๋ ์ด์ ๊ฐ ์์ต๋๋ค. ๋๊ท๋ชจ ํ๋ก์ ํธ๋ ํ๋ก๊ทธ๋๋จธ๋ฅผ ์ง์ํ๋ ๋๊ตฌ ์์ด๋ ๋ฌธ์ ๊ทธ๋๋ก ์ ์ง ๊ด๋ฆฌํ ์ ์์ผ๋ฉฐ ํ์ฌ UI ์ธ์ด๋ ๋ง์ด ๋ค์ณ์ ธ ์์ต๋๋ค.
์ปดํ์ผ๋ ๋ฐ์ธ๋ฉ์ด ๋ง์ ๋์์ด ๋ฉ๋๋ค.
@weitzhandler ๋ด ๋ง์ ๋น์ ์ ๋์์ด ๋ฌด์์ ๋๊น?
... ๋ชจ๋ ๊ฒ์ด ์ ์ฉ ๊ฐ์์ฑ ์์ฑ์ ๊ฐ์ ธ์ผ ํ๋ ๊ฒ์ ์๋๋๋ค.
๋ญ? ์ฌ์ค [๋ฐ์ธ๋ฉ]์ด ์ฅ์ ์ด ์๋ ๊ฒ ๊ฐ์์. V์ VM ๊ฐ์ ๋์จํ ๊ฒฐํฉ์ด ์ข์ ์ ์์ต๋๋ค.
์ข์ ๋ฐ์ํ ํ๋ ์์ํฌ์์๋ name:Mutable<string>
์ ๊ฐ์ ๊ด์ฐฐ ๊ฐ๋ฅํ ๋ณ์(์ฝ๋์์)๋ฅผ ์ ์ํ ๋ค์ let visibility = name.map(fun s -> s <> "")
๋งคํํ ๋ค์ visibility.bind someView.set_IsVisible
๋๋ name.bind(fun s -> someView.IsVisible <- s <> "")
ํ์ฌ ๋ทฐ ์์ฑ์ ๋ฐ์ธ๋ฉํ ์ ์์ต๋๋ค.
๋๋ https://github.com/ReedCopsey/Gjallarhorn์ ์ฌ์ฉํ์ง๋ง ์ฃผ๋ณ์ ๋ค์ํ ๋ฐ์ ํ๋ ์์ํฌ๊ฐ ์์ต๋๋ค.
1. ๋ฐ์ธ๋ฉ๊ณผ ๋ฌ๋ฆฌ ๋ชจ๋ ๊ฒ์ด ์ ๋ ฅ๋ฉ๋๋ค. 2. ์ฌ๋ฌผ(ํจ์, ์์ฑ, ๋ณด๊ธฐ)์ ๋ฌธ์์ด ์ด๋ฆ์ ์ ๋ฌํ๋ ๊ฒ์ด ์๋๋ผ ๊ฐ์ฒด๋ผ๊ณ ํฉ๋๋ค. 3. ํจ์๋ ํจ์์ผ ๋ฟ์ด๋ฉฐ ๋ณํ๊ธฐ๋ณด๋ค ํจ์ฌ ๋ ํฌ๋ฐํฉ๋๋ค. 4. ๊ฐ๋จํ ๊ฐ์ฒด ์์ฑ์ ์ถ๊ฐ๋ก ์ ๊ณตํด์ผ ํ๋ ๋ฐ์ธ๋ฉ ์์ฉ๊ตฌ "๋ฐ์ธ๋ฉ ๊ฐ๋ฅํ ์์ฑ" ๋ฑ์ ์ ๊ฑฐํ ์ ์์ต๋๋ค.
๋ทฐ๋ ์ฌ์ ํ Xaml๋ก ์์ฑํ ์ ์์ต๋๋ค. ํนํ ๋๋ถ๋ถ์ด ์ ์ ๋ ์ด์์์ธ ๋จ์ํ๊ณ ๋ชจ๋ ๊ณณ์ ๋งค์ง ๋ฌธ์์ด์ด ์๋ค๋ ๋จ์ ์ด ์์ง๋ง ๋์์ด๋๊ฐ ๋ผ์ด๋ธ ๋ทฐ๋ฅผ ์ ๊ณตํ ์ ์๋ค๋ ์ฅ์ ์ด ์์ต๋๋ค. ๋ผ์ด๋ธ ๋ทฐ๋ฅผ ์ ๊ณตํ๋ ์ฝ๋๊ฐ ์์ผ๋ฉด ๋ ์ข์ต๋๋ค. ํต์ญ์ฌ์ ํจ๊ป๋ผ๋ฉด ๋งค์ฐ ๊ฐ๋ฅํฉ๋๋ค.
๋ฆฌ์กํฐ๋ธ ํ๋ ์์ํฌ์ ๋ํด ๋งํ์๋ฉด Chain Reactive ๋ฅผ ํ์ธํ๊ณ ์คํ ์์ค๋ก ์ง์ ํด์ผ ํ๋์ง ์๋ ค์ฃผ์ธ์.
์๋
ํ์ธ์, ms ํ์ด uservoice์ ๋ชจ๋ ๋ฒ๊ทธ/๊ธฐ๋ฅ์
๊ทธ๋ ๋ค๋ฉด WinUI 3.0 ์ด์์ ํ๋ฅญํ ๋จ๊ณ๊ฐ ๋ ๊ฒ์
๋๋ค.
@ hupo376787 ๋๋ ์ด๊ฒ์ด Windows ๊ฐ๋ฐ ํ๋ซํผ์ ๋ ๊ด๋ฒ์ํ๊ฒ ๋ ผ์ํ๋ ์ค๋ ๋๊ฐ ์๋๊ธฐ ๋๋ฌธ์ ๋น์ ์ด downvotes๋ฅผ ์ป์๋ค๊ณ ์๊ฐํฉ๋๋ค.
ํ์ง๋ง ๋ง์ดํฌ๋ก์ํํธ์ ๊ฐ๋ฐ์๊ฐ ์ฐธ์ฌํ ์ ์๋ ์๋์ฐ ๊ฐ๋ฐ ํ๋ซํผ์ ๋ํด ๊ณต๊ฐ ํ ๋ก ์ ์ฌ์ง๊ฐ ์๋ ๊ฒ์ด ๋ฌธ์ ์ด๊ณ , ํด๋น ๋ง์ดํฌ๋ก์ํํธ ๊ทธ๋ฃน์ด ํผ๋๋ฐฑ ๋ฉ์ปค๋์ฆ์ ์ ๋ฐ์ดํธํ๊ฑฐ๋ ๋์ํ์ง ์๊ณ ์ ์งํ์ง ์๋ ๊ฒ์ด ๋ฌธ์ ๋ค. ๋ช ๋ ๋์ ์ฌ์ฉ์ ๋ชฉ์๋ฆฌ.
@charlesroddie ๋ค, ์ ์ ๋ณด์ด์ค๊ฐ ๋ฒ๋ ค์ง ๊ฒ ๊ฐ์ต๋๋ค. ํผ๋๋ฐฑ ํ๋ธ์ ์ ๋ชฉ์๋ฆฌ๋ฅผ ๋ณด๋ด๋๋ฆฌ๊ฒ ์ต๋๋ค. ์๋ง๋ ms๋ ๋ฌด์ํ๊ฒ ์ง๋ง ๋๋ ๋ด ์ผ์ ํ ๊ฒ์ ๋๋ค.
UserVoice๋ ์ด๋ฒ ๋ฌ์ ์์ ํ ์ฌ์ฉ ์ค์ง๋ฉ๋๋ค.
ํน์ ์ ํ์ ๊ฒฝ์ฐ GitHub ์ ์ฅ์(์: ์ด์ ๊ฐ์)๋ ๊ด๋ จ ์์ง๋์ด๋ง ํ์์ ์ ๊ทน์ ์ผ๋ก ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ํผ๋๋ฐฑ์ ์ํ ์ต๊ณ ์ ์ฅ์์ ๋๋ค.
ํน์ repo์ ์ ํ๊ณผ ๊ด๋ จ์ด ์๋ ํผ๋๋ฐฑ์ Feedback Hub๋ฅผ ์ด์ฉํด์ฃผ์ธ์. ํนํ API ๋ฐ ๊ฐ๋ฐ์ ๋๊ตฌ์ ๋ํ ํผ๋๋ฐฑ์ ์ํ ๋ค์ํ ํ์ ๋ฒ์ฃผ๊ฐ ์๋ "๊ฐ๋ฐ์ ํ๋ซํผ" ๋ฒ์ฃผ๊ฐ ์์ต๋๋ค.
ํ์ฌ UserVoice์ ๋ํ ๋ง์ ๊ธฐ๋ก๊ณผ ์ด์ ํผ๋๋ฐฑ์ด ์๋ค๋ ๊ฒ์ ์๊ณ ์์ง๋ง(์์ง๋ ์ถ์ ํ ์์ ์) GitHub์ Feedback Hub ๋ชจ๋ UserVoice๋ณด๋ค ์์ง๋์ด๋ง ํ๊ณผ ์์ ํญ๋ชฉ ์ถ์ ์ ๋ ์ง์ ์ ์ธ ๊ฒฝ๋ก๋ฅผ ์ ๊ณตํฉ๋๋ค. ๊ธ์ ์ ์ธ ๋ณํ์ฌ์ผ ํ๋ค. ๋ค์ํ ์ง์ ๋ฐ ํผ๋๋ฐฑ ๋งํฌ๋ฅผ ์ ๋ฐ์ดํธํ๋ ์ค์ ๋๋ค.
์ฐ๋ฆฌ๋ ๋ ์ฑ๋์์ ๋ค์ด์ค๋ ๋ชจ๋ ๊ฒ์ ๋ณด๊ณ ์์ผ๋ฉฐ ํผ๋๋ฐฑ๊ณผ ๋ฒ๊ทธ ๋ณด๊ณ ์์ ์ ๋ง ๊ฐ์ฌํฉ๋๋ค!
@jesbis ์๊ฒ ์ต๋๋ค.
WinForms์ ๊ฒฝ์ฐ ์ WinUI ํ๋ก์ ํธ ํ ํ๋ฆฟ์ ์ฌ์ฉํ ๋ ์์ฑ ์ฐฝ์ด ๊ณ์ ์๋ํ๊ณ WinUI ์ปจํธ๋กค์ ์์ฑ์ ์ค์ ํ ์ ์์ต๋๊น? ํ๋ฃจ ์ข ์ผ HTML์ ์ฝ๋ฉํ ์ ์์ง๋ง(์ผ๋ฐ์ ์ผ๋ก Asp.net MVC) ์ปจํธ๋กค์ ์ฌ์ฉํ ์ ์๋ ์ค์ ์ด ๋๋ฌด ๋ง์ผ๋ฉด ์ง๋ 20๋ ๋์ ์์ฑ ์ฐฝ์ ์ฆ๊ฒจ ์ฌ์ฉํ์ต๋๋ค.
@Dean-NC WinFoms/Windows Forms๊ฐ ์๋ XAML ๋์์ด๋์ ๋ํด ๋ฌป๋ ๊ฒ ๊ฐ์๋ฐ์? ๊ทธ๋ ๋ค๋ฉด XAML ๋์์ด๋์์ ํญ๋ชฉ์ ์ ํํ ๋ ์์ฑ ํจ๋์ด WinUI ์ปจํธ๋กค์ ๋ํด ๊ณ์ ์๋ํฉ๋๋ค.
@marb2000 ๋๋ ์์งํ๊ฒ๋ WinUI 3๊ฐ ์๋ก์ด ์ปจํธ๋กค์ WinForms์ ๊ฐ์ ธ์ฌ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋๋ถ๋ถ ๋งค๋๋ฝ๊ณ ๋ ๊ฑฐ์ ์ปจํธ๋กค๊ณผ WinUI ์ปจํธ๋กค์ด ๋ชจ๋ ์๋ ํผ์ ๊ฐ์ง ์ ์๊ณ ์์ฑ ์ฐฝ์ด ์๋ํ๋ค๋ ์๋ฏธ์ ๋๋ค. ๋ ๊ฑฐ์ ๋ฐ WinUI ์ปจํธ๋กค ๋ชจ๋์ ๋ํด.
๋๋ ์์ ์ ์ฒด ๊ฒ์๋ฌผ์ ์ฝ์๊ณ (WinForms ๊ฐ๋ฐ์๋ก์) ๋ง์ ํฅ๋ถ์ ๊ฐ์ง๊ณ ์ด๊ฒ์ ๋ฐ๋ผ ์์ง๋ง ์ด๊ฒ์ด ์ด๋ป๊ฒ ์๋ํ๋์ง์ ๋ํ ๋์ ์์ค์ ์ํฌ ํ๋ก์ฐ๋ฅผ ์คํด ํ ๊ฒ ๊ฐ์ต๋๋ค (๋ค์ WinForms์ ๊ด์ ์์ ).
๋๋ ์ค๋ซ๋์ WinForms๊ฐ ์์ผ๋ก ๋ช ๋
๋์ ์ฌ์ ํ ์ข์ ์ผ์ด ๋ ์ ์๋ค๊ณ ๋งํ์ง๋ง, ๊ฐ์ฅ ํฐ ์ฝ์ ์ ๊ธฐ๋ณธ ์ปจํธ๋กค์ด ๊ตฌ์์ผ๋ก ๋ณด์ธ๋ค๋ ๊ฒ์
๋๋ค(ํ
์คํธ ์์๋ ํจ๋ฉ์ ํ์ฉํ์ง ์์ผ๋ฏ๋ก ๊ฐ๋๊ณ ์์ ๋ผ๋์ค ๋ฐ ํ์ธ๋ ๋ฒํผ์ผ๋ก ๋ณด์
๋๋ค. , ๋ฑ.). Win 10 ์ปจํธ๋กค(ํ
์คํธ ์์, ๋ผ๋์ค, ํ์ธ๋)์ ์์ฃผ ๊ธฐ๋ณธ์ ์ธ ๊ฒ๋ง์ผ๋ก๋ WinForms์ ์๋ก์ด ์๋ช
์ ๋ถ์ด๋ฃ์ ์ ์์ต๋๋ค.
๊ธฐ์ฌ๊ฐ ์์ต๋๊น, ์๋๋ฉด ๋ ๊ฑฐ์ ์ปจํธ๋กค๊ณผ ์ ์ปจํธ๋กค์ ๋ชจ๋ ์ฌ์ฉํ๋ ค๋ ์ WinForms ํ๋ก์ ํธ์ ์ํฌํ๋ก์ ๋ํ ๊ฐ๋ตํ ์ค๋ช
์ ์ ๊ณตํ์๊ฒ ์ต๋๊น?
๊ฐ์ฌ ํด์.
@marb2000 ๋๋ ์์งํ๊ฒ๋ WinUI 3๊ฐ ์๋ก์ด ์ปจํธ๋กค์ WinForms์ ๊ฐ์ ธ์ฌ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋๋ถ๋ถ ๋งค๋๋ฝ๊ณ ๋ ๊ฑฐ์ ์ปจํธ๋กค๊ณผ WinUI ์ปจํธ๋กค์ด ๋ชจ๋ ์๋ ํผ์ ๊ฐ์ง ์ ์๊ณ ์์ฑ ์ฐฝ์ด ์๋ํ๋ค๋ ์๋ฏธ์ ๋๋ค. ๋ ๊ฑฐ์ ๋ฐ WinUI ์ปจํธ๋กค ๋ชจ๋์ ๋ํด.
๋๋ ์์ ์ ์ฒด ๊ฒ์๋ฌผ์ ์ฝ์๊ณ (WinForms ๊ฐ๋ฐ์๋ก์) ๋ง์ ํฅ๋ถ์ ๊ฐ์ง๊ณ ์ด๊ฒ์ ๋ฐ๋ผ ์์ง๋ง ์ด๊ฒ์ด ์ด๋ป๊ฒ ์๋ํ๋์ง์ ๋ํ ๋์ ์์ค์ ์ํฌ ํ๋ก์ฐ๋ฅผ ์คํด ํ ๊ฒ ๊ฐ์ต๋๋ค (๋ค์ WinForms์ ๊ด์ ์์ ).
๋๋ ์ค๋ซ๋์ WinForms๊ฐ ์์ผ๋ก ๋ช ๋ ๋์ ์ฌ์ ํ ์ข์ ์ผ์ด ๋ ์ ์๋ค๊ณ ๋งํ์ง๋ง, ๊ฐ์ฅ ํฐ ์ฝ์ ์ ๊ธฐ๋ณธ ์ปจํธ๋กค์ด ๊ตฌ์์ผ๋ก ๋ณด์ธ๋ค๋ ๊ฒ์ ๋๋ค(ํ ์คํธ ์์๋ ํจ๋ฉ์ ํ์ฉํ์ง ์์ผ๋ฏ๋ก ๊ฐ๋๊ณ ์์ ๋ผ๋์ค ๋ฐ ํ์ธ๋ ๋ฒํผ์ผ๋ก ๋ณด์ ๋๋ค. , ๋ฑ.). Win 10 ์ปจํธ๋กค(ํ ์คํธ ์์, ๋ผ๋์ค, ํ์ธ๋)์ ์์ฃผ ๊ธฐ๋ณธ์ ์ธ ๊ฒ๋ง์ผ๋ก๋ WinForms์ ์๋ก์ด ์๋ช ์ ๋ถ์ด๋ฃ์ ์ ์์ต๋๋ค.
๊ธฐ์ฌ๊ฐ ์์ต๋๊น, ์๋๋ฉด ๋ ๊ฑฐ์ ์ปจํธ๋กค๊ณผ ์ ์ปจํธ๋กค์ ๋ชจ๋ ์ฌ์ฉํ๋ ค๋ ์ WinForms ํ๋ก์ ํธ์ ์ํฌํ๋ก์ ๋ํ ๊ฐ๋ตํ ์ค๋ช ์ ์ ๊ณตํ์๊ฒ ์ต๋๊น?
๊ฐ์ฌ ํด์.
์ฑ ํ๋ก์ ํธ๋ฅผ ๊ฐ์ ธ์ค๊ณ WinUI ์ฐฝ๊ณผ ํ์ด์ง๋ฅผ ์ถ๊ฐํ๊ณ ์ต์ XAML UI๋ฅผ ์ฌ์ฉํ์ฌ UI๋ฅผ ์์ ํ ๋๋ ์กฐ๊ธ์ฉ ๋ฐ๊ฟ ์ ์์ ๊ฐ๋ฅ์ฑ์ด ๋ ํฝ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ธฐ์กด Winforms ๋ฐ WPF UI์ XAML์ ์ฝ์ ํ๊ธฐ ์ํ XAML ์์ผ๋๋๊ฐ ์์ต๋๋ค.
Blazor ํ์ Uno์ ํ๋ ฅํ์ฌ Uno(ํนํ ์๋ฒ ์ธก)์ ํฌํจ๋ ํธ์คํ ๋ชจ๋ธ ์ค ์ผ๋ถ๋ฅผ ๊ฐ์ ธ์ค๊ฑฐ๋ Blazor์์ ์ฌ์ฉํ ์ ์๋ Uno UI(๋ฐ WinUI 3) ๋ ๋๋ง/๋น์ฃผ์ผ ๋ ์ด์ด๋ฅผ ๊ฐ์ ธ์์ผ ํฉ๋๋ค.... ๋ฐ/๋๋ Blazor์ฉ Xaml Islands?
๋๋ถ๋ถ์ ํผ๋๋ฐฑ์ด ์ฃผ๋ก xaml ๊ณต๊ฐ์์ ์์ ํ๋ ๊ฐ๋ฐ์๋ค๋ก๋ถํฐ ๋์ค๊ธฐ ๋๋ฌธ์ ์ฌ๊ธฐ์์ ์ฝ๊ฐ ์์ํฉ๋๋ค. ๊ทธ๋ค์ ์ผ๋ฐ์ ์ผ๋ก ์ด๋ฏธ ๊ฐ์ง๊ณ ์๋ ๊ฒ๋ณด๋ค ๋ ๋์ ๋ฒ์ ์ ์ฐพ๊ณ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ๊ธฐ์กด ์ฌ์ฉ์์๊ฒ๋ ์ข์์ง ๋ชจ๋ฅด์ง๋ง ์ง๊ธ๊น์ง UWP๋ฅผ ๊ธฐํผํ ๋ง์ ๊ฐ๋ฐ์๋ฅผ ๋์ด๋ค์ผ์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
์ฐ๋ฆฌ ํ์ 1๊ฐ์ UWP ์ฑ๋ง ๊ฐ๋ฐํ์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋ ์ด์ ๋ฐ์ ํ์ง ์์ ๊ฒ์ ๋๋ค.
๊ทน๋ณตํ ์ ์๋ ์ฅ์ ๋ฌผ์ ๋ด์ฅ๋ ํ๋ก ์์ฑ๋ ๋ณด๊ณ ์ ์์ฑ๊ธฐ๊ฐ ์๋ค๋ ๊ฒ์ ๋๋ค. ์ฐ๋ฆฌ๋ UWP๋ฅผ ์ง์ํ๋ค๊ณ ์์ฅ์ ๋์ ์๋ ๋ชจ๋ ํ์ฌ ๋ณด๊ณ ์ ์์ฑ์๋ฅผ ์ํํด ๋ณด์์ต๋๋ค. ๋ถํํ๋ ๊ทธ ์ค ์ด๋ ๊ฒ๋ UWP์ ์ ์๋ํ์ง ์์ต๋๋ค. UWP ์ ํ์ ์ผ๋ฐ์ ์ผ๋ก WPF/WinForms ๋ณํ์ ๋น ๋ฅธ ํดํน์ด๋ฉฐ ์ ๋๋ก ์๋ํ์ง ์์ต๋๋ค.
UWP ์ ํ์์ Stimulsoft Reports๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๊ทธ๊ฒ์ ๋งค์ฐ ๋ฒ๊ทธ๊ฐ ์์ผ๋ฉฐ UWP ์ฌ์ฉ๋ฅ ์ด ๋๋ฌด ๋ฎ๊ธฐ ๋๋ฌธ์ ๋ฒ๊ทธ๋ฅผ ์์ ํ์ง ์์ ๊ฒ์ด๋ผ๊ณ ๋งํ์ต๋๋ค.
๋ชฉ๋ก์ ๋ฐ์ดํฐ ์๊ฐํ๊ฐ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์๋ฐฑ๋ง ๊ฐ์ ์ ํจ ํ์ ์ฑ์ด ์ฌ์ ํ ์กด์ฌํ๋ ์ด์ ๋ ๋ง์ ๊ธฐ์ ์ด ๋ด๋ถ ์ฑ์ ๋น์ฃผ์ผ์ ๊ทธ๋ค์ง ์ ๊ฒฝ์ ์ฐ์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ทธ๋ค์ ์๊ณ๊ฐ ์๋ ์ซ์ ์ด์ ์ํฉ๋๋ค.
๋ฐ๋ผ์ WinUI๊ฐ ์ต์ข ์ ์ผ๋ก ๋ฐ์ดํฐ ๊ฐ๋ฐ์๋ณด๋ค ์์์ ์ ์ธํ๋ ๊ฒ์ด๋ผ๋ฉด ๋ด์ฅ๋ ํ ํ์์ ๋ณด๊ณ ์ ์์ฑ๊ธฐ๊ฐ ํ์ํฉ๋๋ค.
์ด๊ฒ์ด ์๊ฐ์ ์ธ ์ฌ๋๋ค์ ๊ธฐ๋ถ์ ์ํ๊ฒ ํ์ง ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค :-)
์ ์ ์ผ๋ก ๋์ํฉ๋๋ค. ์ฑ๊ณผ ์ฝ๊ฒ ํตํฉํ ์ ์๋ ๋ณด๊ณ ์์คํ ์์ด ์ด๋ป๊ฒ ํ๋์ ์ธ ๋น์ฆ๋์ค ์ฑ์ ๊ฐ๋ฐํ ์ ์์ต๋๊น? ๊ฐ๋ฐ์๊ฐ ์ด๋ํ๋ ๊ฒ์ ๋ง์ ์ ์๋ ๊ฑฐ๋ํ ํ๊ณก์ ๋๋ค.
๋น์ฆ๋์ค ์ฌ์ฉ์๋ ํ๋ก ์์ฑ๋ ๋ฐ์ดํฐ์ ์ํธ ์์ฉํ ๋ค์ ์ธ์ํ๊ฑฐ๋ ๋ค๋ฅธ ํ์์ผ๋ก ๋ด๋ณด๋ผ ์ ์์ด์ผ ํฉ๋๋ค. ๋ํ ์ก์ฅ, ๊ฒฌ์ ์, ๋ช ์ธ์ ๋ฐ ๊ธฐํ ๋๊ตฌ ๋ฌธ์๋ฅผ ์์ฑํ ์ ์์ด์ผ ํฉ๋๋ค.
๋น์ฆ๋์ค/๊ธฐ์ ์ด ์ฌ์ ํ Windows์ ๊ฐ์ฅ ํฐ ์๋น์๋ผ๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค. UWP์ฉ์ผ๋ก ๊ฐ๋ฐ๋์ง ์์ Windows ์์ฝ์์คํ ์ ๊ทผ๋ณธ์ ์ธ ์ด์ ๋ ๋ฌด์์ ๋๊น?
ํผ๋๋ฐฑ @VagueGit ๋ฐ @Elmarcotoro์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค! ์ํฐํ๋ผ์ด์ฆ ์ ์ด๋ ํ์ฌ ์ฐ๋ฆฌ์๊ฒ ๋ถ์กฑํ ๋ถ๋ถ์ ๋๋ค. ๊ทธ๋ฌ๋ ํ์ด๋ฐ์ด ์ข์ต๋๋ค. DataGrid ์ปจํธ๋กค ๋์์ธ์ ๋ํ ํผ๋๋ฐฑ์ ์์งํ๊ณ ์์ต๋๋ค. ์ฌ๊ธฐ #1500 ์ ์ฝ๊ณ ํผ๋๋ฐฑ์ ์ฃผ์ธ์.
๋ง์ฐฌ๊ฐ์ง๋ก ์ ์ฌ๊ฐํ ํ ์ด๋ธ ํ์ ๋ฐ์ดํฐ ์ ์ด ์ธ์๋ ๋ค์ด์ด๊ทธ๋จ ์ ์ด๋ฅผ ํตํด ๋ณต์กํ ๊ด๊ณ๋ฅผ ๊ณต์ ํ๋ ๋ฐฉ์์ผ๋ก ์ฐฝ์์ ์ผ๋ก ๋ฏผ์ฃผํํ๊ธฐ ์ํ ์คํ ์์ค UWP ๊ทธ๋ํ ์ ์ด๊ฐ ํ์ํฉ๋๋ค.
๋ณด๊ณ ์์คํ ์ผ๋ก๋ Telerik UI๊ฐ ํ์ฌ ์ต๊ณ ์ ์ ํ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ค๊ตญ ์๋ด์ "์ด๋ค ์ฌ๋์ ์ด๋ค ์ง์ ์ ์ ๋ฌธ์ผ๋ก ํ๊ณ ์ด๋ค ์ฌ๋์ ๋ค๋ฅธ ์ง์ ์ ๊ฐ์ง๋๋ค." Telerik, DevExpress ๋๋ ๋ค๋ฅธ ์ฌ๋์ ๋ณด๊ณ ์ ๋ฅ์ํฉ๋๋ค.
๋ค์ํ ์ปจํธ๋กค์ด ์๊ธฐ ๋๋ฌธ์ ์ด ํ์ ํํ ๊ฒ์ด ์๋๋ผ ์ ์ฒด MS ์ ๋ต์ ํํด์ผ ํฉ๋๋ค. Satya์ ์์๋ถํฐ ๋ชจ๋ฐ์ผ ํฌ๊ธฐ, ๊ทธ๋ค์ ios ๋ฐ android๋ฅผ ๋ ์ ํธํ์ฌ ๋ณด์ค๋ฅผ ์ข์ํฉ๋๋ค. ์ ์ฒด UWP ์ํ๊ณ๊ฐ ์ฝํด์ง๊ณ ์ฝํด์ง๋๋ค.
ํ์ฌ๋ก์๋ ํธ์ํฐ์ "UWP๋ ์ฃฝ์๋ค"๋ ์ฃผ์ฅ์ด ์๋๋ฐ, MS๊ฐ ์ด๋ฅผ ๋ช ํํ ํ๊ณ uwp ๊ธธ์ ์ ์ธํด์ผ ํ๋ค๊ณ ์๊ฐํ๋ค.
ํ์ฌ๋ก์๋ ํธ์ํฐ์ "UWP๋ ์ฃฝ์๋ค"๋ ์ฃผ์ฅ์ด ์๋๋ฐ, MS๊ฐ ์ด๋ฅผ ๋ช ํํ ํ๊ณ uwp ๊ธธ์ ์ ์ธํด์ผ ํ๋ค๊ณ ์๊ฐํ๋ค.
๋ฐฉ๊ธ ๋ก๋๋งต ์ค๋ ๋์ ๊ฒ์ํ์ต๋๋ค ...
@jevansaks DataGrid ์ปจํธ๋กค์ ๋ํ ์ ๋ณด๋ฅผ
@hupo376787
"๋ณด๊ณ ์์คํ
์ ๊ฒฝ์ฐ Telerik UI๊ฐ ํ์ฌ ์ต๊ณ ์ ์ ํ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค."
๋ด๊ฐ ๋ณผ ์ ์๋ ๋ฐ์ ๋ฐ๋ฅด๋ฉด Dev Express๋ ํ์ฌ UWP์ ๋ํ ๋ณด๊ณ ์๋ฅผ ๋ง๋ค๊ณ ๋ณด๊ธฐ ์ํ ์ ์ฒด ์คํ์ ์ ๊ณตํ๋ ์ ์ผํ ํ์ฌ์ด๋ฉฐ ๊ฐ๊ฒฉ์ ํ๋ฆฌ๋ฏธ์ ์ชฝ์ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. Telerik์ ํฌํจํ ๋ค๋ฅธ ๋ชจ๋ ์ ํ์ ๋๊ตฌ์ ๊ณต๋ฐฑ์ด ์์ด UWP์ฉ ๋ณด๊ณ ์๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ๋๋ ์ด๊ฒ์ ๋ํด ์ ์ ํ ์ํฅ์ด ์์ต๋๋ค(ํฌ๋ง).
๋ณด๊ณ ์์คํ ์ผ๋ก๋ Telerik UI๊ฐ ํ์ฌ ์ต๊ณ ์ ์ ํ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ค๊ตญ ์๋ด์ "์ด๋ค ์ฌ๋์ ์ด๋ค ์ง์ ์ ์ ๋ฌธ์ผ๋ก ํ๊ณ ์ด๋ค ์ฌ๋์ ๋ค๋ฅธ ์ง์ ์ ๊ฐ์ง๋๋ค." Telerik, DevExpress ๋๋ ๋ค๋ฅธ ์ฌ๋์ ๋ณด๊ณ ์ ๋ฅ์ํฉ๋๋ค.
@hupo376787 ๊ฒ์๋ฌผ์ด ์๋ชป๋์๋ค๊ณ ์์ํ๊ธฐ ์ ์ ์ฌ์ค ํ์ธ์ ๊ฐ๋ณํ ์ฃผ์๋ฅผ Telerik Reporting ์๋ WPF ๋ฐ WinForms์ฉ ๋ณด๊ณ ์ ๋์์ด๋๊ฐ ์์ง๋ง UWP๋ ์์ต๋๋ค.
DevExpress ์๋ WinForms ๋ฐ WPF์ฉ ๋ณด๊ณ ์ ๋์์ด๋๋ ์์ง๋ง UWP๋ ์์ต๋๋ค.
๋ฐ๋ผ์ ์์ํ ๋ณด์กด๋๊ณ ๋๋ฆฌ ์ ํฌ๋ ์ค๋ฅ๋ฅผ ๋ฒํ๊ธฐ ์ ์ ์ฌ์ค์ ํ์ธํ์ญ์์ค. ์ด์ผ, ์ธ์ ๊ฐ๋ ์๋ง์ด ๋ ๊ฒ ๊ฐ์ ์๋ฆฌ๋ค์ ๐
@hupo376787 ๊ฒ์๋ฌผ์ด ์๋ชป๋์๋ค๊ณ ์์ํ๊ธฐ ์ ์ ์ฌ์ค ํ์ธ์ ๊ฐ๋ณํ ์ฃผ์๋ฅผ Telerik Reporting ์๋ WPF ๋ฐ WinForms์ฉ ๋ณด๊ณ ์ ๋์์ด๋๊ฐ ์์ง๋ง UWP๋ ์์ต๋๋ค.
DevExpress ์๋ WinForms ๋ฐ WPF์ฉ ๋ณด๊ณ ์ ๋์์ด๋๋ ์์ง๋ง UWP๋ ์์ต๋๋ค.
๋ฐ๋ผ์ ์์ํ ๋ณด์กด๋๊ณ ๋๋ฆฌ ์ ํฌ๋ ์ค๋ฅ๋ฅผ ๋ฒํ๊ธฐ ์ ์ ์ฌ์ค์ ํ์ธํ์ญ์์ค. ์ด์ผ, ์ธ์ ๊ฐ๋ ์๋ง์ด ๋ ๊ฒ ๊ฐ์ ์๋ฆฌ๋ค์ ๐
์๊ฒ ์ต๋๋ค. ๋ณด๊ณ ์ ๋ํ ์ดํด๊ฐ ๋ค๋ฅธ ๊ฒ ๊ฐ์ต๋๋ค. https://www.telerik.com/universal-windows-platform-ui ๋ฐ https://www.devexpress.com/products/net/controls/win10apps/๋ฅผ ์๋ฏธ
๋ด๊ฐ ํ๋ ธ์ต๋๋ค. Dev Express๋ UWP์ ๋ํ ๋ณด๊ณ ๋ฅผ ์ ๊ณตํ์ง ์์ต๋๋ค. ํ์ฌ ๋๊ตฌ ๊ฐ๋ฐ์๋ ์๋ ๊ฒ ๊ฐ์ต๋๋ค! UWP์ ๋ํ ๋ณด๊ณ ๋ฅผ ์ ๊ณตํ๊ธฐ ์ํ ๋ก๋๋งต์ด ์๋์ง ์ฌ๋ถ์ ๋ํด ์ฑํ
์ ํตํด Dev Express์ ๋ฌธ์ํ์ต๋๋ค.
๊ทธ๋ค์ ๋งํ๋ค,
"XtraReports Suite๋ System.Drawing ์ด์
๋ธ๋ฆฌ์์ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉฐ Universal Window Applications์ ๋ํด ๋์ผํ ๋๊ตฌ ์ธํธ๋ฅผ ๊ตฌํํ์ง ๋ชปํ๊ฒ ํ๋ ๊ฒ์ ์ด ์ด์
๋ธ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์๋ค๋ ๊ฒ์
๋๋ค(https://stackoverflow.com/questions /31545389/windows-universal-app-with-system-drawing-and-possible-alternative) ๊ทธ๋์ ์ฐ๋ฆฌ๋ ์์ง ์ด ๋ถ์ผ์ ๋ํ ๋ฏธ๋ ๊ณํ์ ์ธ์ฐ์ง ์์์ต๋๋ค."
@jevansaks , Microsoft UI ํ๊ณผ ์ด๋ฌํ ํ์ฌ ๋๊ตฌ ์ ๊ณต์ ์ฒด ๊ฐ์ ์ปค๋ฎค๋์ผ์ด์ ์ด ๋ถ์กฑํ ๊ฒ ๊ฐ์ต๋๋ค. ํ์ฌ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ฉด ์ข๊ฒ ์ง๋ง UWP ํ๋ซํผ์ ์ฌ์ฉํ๋ฉด ์ด๋ฌํ ํ์ฌ์์ ๋ค๋ฅธ ํ๋ซํผ์ฉ ๋๊ตฌ๋ฅผ UWP์ ํตํฉํ๊ธฐ ์ด๋ ค์ด ๊ฒ ๊ฐ์ต๋๋ค.
๊ทธ๋ค์ ๋ณด๊ณ ์๊ตฌ ์ฌํญ๊ณผ ํจ๊ป ๊ทธ๋ค์ [email protected] ์ ์ฐ๋ฝํ๋๋ก ์์ฒญํ์ต๋๋ค. Win UI 3.0 ํ์ด ๊ทธ๋ค์๊ฒ ์ฐ๋ฝํ์ฌ ๊ตฌํ์ ์ง์ํ๋ ๋ฐฉ๋ฒ์ธ์ง ํ์ธํ๋ ๊ฒ์ด ๋์์ด ๋ ์ ์์ต๋๋ค. ์ ์ ํ ๋ณด๊ณ ๋๊ตฌ ์์ด ์ด๋ป๊ฒ ๋ฒ์ฉ ํ๋ซํผ์์ ๋น์ฆ๋์ค ๊ฐ๋ฐ์๋ฅผ ํ๋ณดํ ์ ์์์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
๋ณด๊ณ : WinForms์ ๊ด์ ์์ ์ ๋ Telerik๊ณผ DevExpress(์ต์ ๋ฒ์ ๋ ํฌํจ)๋ฅผ ๋ชจ๋ ์ฌ์ฉํ์ผ๋ฉฐ Telerik๋ ์ข์์ง๋ง DevExpress๋ ์ ๋ฐ์ ์ธ ๋์์ด๋์ ๊ฒฝํ์ด ๋ ๋์์ ๋ฟ๋ง ์๋๋ผ ํจ์ฌ ๋ ๋ฏธ๋ฌํ ๊ธฐ๋ฅ์ด ์๋ค๊ณ ์๊ฐํฉ๋๋ค. Telerik๋ณด๋ค ๋ ๋ณต์กํ ๋ ์ด์์์ ์ํํ ์ ์์์ต๋๋ค. DevExpress ๋ ๋๋ง ๊ธฐ์ ์ด ๋ ๋ฐ์ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
Win UI 3.0 ํ์ด ๊ทธ๋ค๊ณผ ์ฐ๋ฝํ๊ณ ๊ทธ๋ค์ด ๊ตฌํ์ ๋์์ด ๋๋ ๋ฐฉ๋ฒ์ธ์ง ํ์ธํ๋ ๊ฒ์ด ๋์์ด ๋ ์ ์์ต๋๋ค.
์ ํ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ฐ๋ฆฌ๋ ๊ทธ๋ค์๊ฒ ๋ค๊ฐ๊ฐ ๊ฒ์ ๋๋ค.
์ ํ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ฐ๋ฆฌ๋ ๊ทธ๋ค์๊ฒ ๋ค๊ฐ๊ฐ ๊ฒ์ ๋๋ค.
๊ทธ๋ค ๋ชจ๋์ ์ด์ผ๊ธฐํ๊ณ ๋ธ๋ก์ด ๋ฌด์์ธ์ง ๋ณด๋ ๊ฒ์ด ๊ฐ์น๊ฐ ์์ต๋๊น? Telerik, Grapecity, DevExpress ๋ฑ
์ ํ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ฐ๋ฆฌ๋ ๊ทธ๋ค์๊ฒ ๋ค๊ฐ๊ฐ ๊ฒ์ ๋๋ค.
๊ทธ๋ค ๋ชจ๋์ ์ด์ผ๊ธฐํ๊ณ ๋ธ๋ก์ด ๋ฌด์์ธ์ง ๋ณด๋ ๊ฒ์ด ๊ฐ์น๊ฐ ์์ต๋๊น? Telerik, Grapecity, DevExpress ๋ฑ
ํ์คํ, ๊ทธ๊ฒ์ด ์ฐ๋ฆฌ์ ๊ณํ์ ๋๋ค.
์ฐ๋ฆฌ๋ Windows์ฉ์ผ๋ก ๋น๋ํ๋ ๋๋ถ๋ถ์ ๊ฐ๋ฐ์์ ์ฝ๊ฐ ๋ค๋ฆ ๋๋ค. ์ฐ๋ฆฌ๋ ๋๋ถ๋ถ ํค์ค์คํฌ ์ฑ(์ปดํจํฐ ์์ ์๊ฐ ์๋ ๋ค๋ฅธ ์ฌ์ฉ์๊ฐ ์คํํ๋๋ก ์๋๋ ์ฑ, ์ผ๋ฐ์ ์ผ๋ก ๋ ๋์ ์์คํ ์ ๋ํ ์ก์ธ์ค ๊ถํ ์์ด ์ ์ฒด ํ๋ฉด์ผ๋ก ํ์๋๋ ์ฑ)์ ๊ฐ๋ฐํฉ๋๋ค. ์ฑ์ ์ผ๋ฐ์ ์ผ๋ก ๊ณ ๊ฐ์ ํน์ ์๊ตฌ ์ฌํญ์ ๋ง๊ฒ ๋น๋๋๋ฉฐ ์คํ ์ด ๋๋ ์ด์ ์์ํ๋ ๊ฒ์ ํตํด ๋ฐฐํฌํ ์๋๊ฐ ์์ต๋๋ค.
์ฑ์ด ์ ์ฒด ํ๋ฉด์ผ๋ก ์คํ๋๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ Windows ์ฑ์ ๋ชจ์๊ณผ ๋๋์ ์ ์ง ๊ด๋ฆฌํ๋ ๊ธฐ๋ณธ ์ ๊ณต ์ปจํธ๋กค์ ๊ฐ์น๋ ๋งค์ฐ ์ ํ์ ์ ๋๋ค. ๋์ ๊ฐ ๊ณ ๊ฐ์ ๋ํด ๋ธ๋๋๊ฐ ๋์ ๊ฒฝํฅ์ด ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ฌ์ ํ ํ์ค Windows ์ฑ์ ๋ง์ ๊ณตํต _๋์_ ๋ฐ ์ปจํธ๋กค์ด ํ์ํ์ง๋ง ์ผ๋ฐ์ ์ผ๋ก ๊ฐ ์ฑ์ ์ปจํธ๋กค ํ ํ๋ฆฟ์ ๋ง์ด ์ฌ์ฉ์ ์ง์ ํ๊ฑฐ๋ ์ต์ํ ํต์ฌ ์คํ์ผ์ ์ฌ์ ์ํฉ๋๋ค. ์์ฃผ ์ค๋ซ๋์ ์ฐ๋ฆฌ๋ UI์ฉ Flash ํ๋ก ํธ์๋๊ฐ ํฌํจ๋ WinForms ๋ฐฑ์๋๋ก ๋ง์ ์ฑ์ ๊ตฌ์ถํ์ต๋๋ค.
๋๋ต์ ์ผ๋ก ๋งํ๋ฉด ์ฐ๋ฆฌ๊ฐ ์์ฑํ๋ ๊ฑฐ์ ๋ชจ๋ ์ฑ์ ์ผ์ข ์ ์น ๊ธฐ๋ฐ ๋ฐฑ์๋๋ฅผ ์ผ๋ถ ํ๋์จ์ด(์: ํ๋ฆฐํฐ, ๋ฐ์ฝ๋ ์ค์บ๋, ๋ง๊ทธ๋คํฑ ์คํธ๋ผ์ดํ ๋ฆฌ๋, RFID ์ค์บ๋, ์นด๋ฉ๋ผ, ์นด๋ ๊ฒฐ์ ํ๋์จ์ด, ์๋ ํ๋งค๊ธฐ ์คํ์ผ ํ๊ธ ๊ฒฐ์ )์ ํตํฉํฉ๋๋ค. ๊ตฌ์ฑ ์์ ๋ฑ) ๋ฐ ์ด๋ฌํ ๊ตฌ์ฑ ์์์ ๋๋ค์๋ ์ญ์ฌ์ ์ผ๋ก UWP SDK๊ฐ ์๋ Win32 SDK์ ํจ๊ป ์ ๊ณต๋์์ต๋๋ค.
์ด๋ฌํ ๋ ๊ฐ์ง ์ด์ ๋ก ์ธํด ๋๋ถ๋ถ์ ๊ณผ๊ฑฐ ์ฑ์ WinForms ์ฑ์ด๊ณ ์ต์ ์ฑ์ ๋๋ถ๋ถ WPF ์ฑ์ ๋๋ค. ์ฐ๋ฆฌ๋ ๋ช ๊ฐ์ง UWP ์ฑ(์ฃผ๋ก Windows์ ์ ๋ง ์ข์ ํ ๋น ์ก์ธ์ค/ํค์ค์คํฌ ๋ชจ๋ ๊ธฐ๋ฅ์ ์ด์ ์ ์ป๊ธฐ ์ํด)์ ๋น๋ํ์ง๋ง ์ผ๋ฐ์ ์ผ๋ก WPF์ ๋น๊ตํ์ฌ ์์ ํ๊ธฐ๊ฐ ํ๋ค๊ณ ์ผ๋ฐ์ ์ผ๋ก ํธํ๋๋ ํ๋์จ์ด SDK๋ฅผ ์ป์ ์ ์์ต๋๋ค. .
๊ทธ๋ฌ๋ ์ฐ๋ฆฌ๋ ์ต์ UI๋ก Win32 ํธํ ์ฑ์ ์์ฑํ ์ ์๋๋ก XAML ์์ผ๋๋์ ๋งค์ฐ ํฅ๋ฏธ๋ฅผ ๋๋๋๋ค. Fluent ๋ฑ๊ณผ ๊ฐ์ ํจ๊ณผ).
ํน์ ์ง๋ฌธ์ ๋ตํ๋ ค๋ฉด:
์ด๋ค ํ ํ๋ฆฟ์ด ๊ฐ์ฅ ํฅ๋ฏธ๋ก์ฐ์ ๊ฐ์?
.NET Core๊ฐ ์๋ C#, WinUI 3.0์ด ์ค๋ฒ๋ ์ด๋ Win32๊ฐ ์ข์ ๊ฒ์ ๋๋ค.
๋ฐ์คํฌํฑ ์ฑ ํ๋ํ๋ฅผ ์ํ Xaml Islands๋ฅผ ์๊ณ ๊ณ์ จ์ต๋๊น?
๋ค, ๊ทธ๋ฆฌ๊ณ ์ ๋ ๊ทธ๋ค๊ณผ ํจ๊ป ํ๋ ์ดํ์ ๋ ์๋์ ์ผ๋ก ๋ง์กฑํ์ต๋๋ค. ๋น๋ก ์ฐ๋ฆฌ๊ฐ _single_ ์ปจํธ๋กค์ ์ฌ์ฉํ์ง ์์ ๊ฐ๋ฅ์ฑ์ด ๋์ง๋ง ์ ์ฒด ์ฌ์ฉ์ ์ ์ UI์ ๋ํ ๊ฒฐ์ ์ ๋ด๋ฆฌ๋ ์ ๋์ ๋๋ค.
๋ด๊ฐ ๊ทธ๊ฒ์ ์๊ณ ์์๋ ์ฃผ๋ ์ด์ ๋ ์ฐ๋ฆฌ๊ฐ Win32 ์ฑ์ ๋ํ Lottie ์ง์์ ๋ฐ๊ธฐ ๋๋ฌธ์ด์์ต๋๋ค.
Windows 10์์ ํ์ฅ๋ ์ด์ ๋ฒ์ ๊ณผ์ ํธํ์ฑ์ด Xaml Islands๋ฅผ ๋ ์ ์ฉํ๊ฒ ๋ง๋ค๊น์?
์ค๋ง; ์ฐ๋ฆฌ๋ ๊ฑฐ์ ํญ์ ๋์ PC๋ฅผ ์ ์ดํ๊ณ ํญ์ ์ต์ ํธํ ๋ฆด๋ฆฌ์ค๋ฅผ ํ๋ณดํ ์ ์์ต๋๋ค.
Visual Studio ๋๋ ๋ค๋ฅธ ๋๊ตฌ๊ฐ ์๋์ผ๋ก ๋ค์์คํ์ด์ค๋ฅผ ์ ๋ฐ์ดํธํ๋ฉด ๋์์ด ๋ ๊น์?
์.
๊ธฐ์กด UWP Xaml ๊ตฌ์ฑ ์์์ WinUI 3.0 ์ฑ ๊ฐ์ ์์ ํ ํธํ์ฑ์ด ์ผ๋ง๋ ์ค์ํฉ๋๊น?
์์ฃผ ์ต์ํ์. ์ฃผ์ ํธํ์ฑ ๋ฌธ์ ๋ ํต์ฌ ์์ ์คํ์ผ ์ง์ ์ ์ํด StaticResource ํค๋ฅผ ๋ณ๊ฒฝํ์ ๊ฒ์ ๋๋ค.
์ฑ ์ฝ๋์ ํจ๊ป ์ฝ๊ฒ ๋ค์ ์ปดํ์ผ ๋ฐ ์ ๋ฐ์ดํธํ ์ ์๋ UWP Xaml ์ ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋๋ WinRT ๊ตฌ์ฑ ์์๋ฅผ ๋ง๋ค๊ฑฐ๋ ์ฌ์ฉํฉ๋๊น?
์, ๊ณผ๊ฑฐ์ Syncfusion UWP ์ ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฅผ ์ฌ์ฉํ์ต๋๋ค.
WinUI 3์์ UWP Xaml ๊ตฌ์ฑ ์์๋ฅผ ์ฌ์ฉํ๋ ๋ฐ ์ ํธํ๋ ์๋ฃจ์ ์ ๋ฌด์์ ๋๊น?
์ ํธํ๋ ์๋ฃจ์ ์ ์ธ๋ถ ์์ค(์: ๋ฌธ์ ๋ทฐ์ด)์ ์์กดํ๊ธฐ๋ณด๋ค๋ WinUI ์์ฒด์์ ๋ ๋ง์ ํ์ค ์ปจํธ๋กค์ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ ๊ฒ์ด์ง๋ง ์ด๋ฌํ ์ธ๋ถ ๊ตฌ์ฑ ์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ผ๋ฐ์ ์ผ๋ก ์ฐ๋ฆฌ๊ฐ ์ ํํ ๋๋ณด๋ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ๋ฐ์ดํธ์ ๋ํด ๋ ์ง๋ณด์ ์ผ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค. ์ด์จ๋ ๋๋ถ๋ถ์ ๊ฒฝ์ฐ WinUI 3.
์์ ๋ก๋๋งต์ ์์ฝ๋ ์ ๋ฐ์ ์ธ 3.0 ๊ณํ์ ๋ํด ์ด๋ป๊ฒ ์๊ฐํ์ญ๋๊น? ์ ๊ท ๋ฐ ๊ธฐ์กด Windows ์ฑ์ WinUI๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๊น?
ํนํ WinUI๊ฐ ๊ณต๊ฐ์ ์ผ๋ก ์ค๊ณ ๋ฐ ๊ฐ๋ฐ๋๊ณ ์๊ธฐ ๋๋ฌธ์ ํ๋์จ์ด ํธํ์ฑ ์ด์ ๋ก ์ธํด ์ญ์ฌ์ ์ผ๋ก ์ฐ๋ฆฌ๋ฅผ ์ ๊ทธ๋ UWP ์ฑ ๋ฐ ๋ณด์ ๋ชจ๋ธ์์ UWP ์ปจํธ๋กค์ด ๋ณด๋ค ๋ช ํํ๊ฒ ๋ถ๋ฆฌ๋๋ ๊ฒ์ ๋ณด๊ฒ ๋์ด ๊ธฐ์ฉ๋๋ค.
Microsoft์์ ์ฑ UI๋ฅผ ๋น๋ํ๋๋ก ๊ถ์ฅํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๋ช ํํ ์ง์นจ์ ํตํด ์ฐ๋ฆฌ๊ฐ ์ง์ํ ์ ์๋ ๋ฐฑ์๋์ ๊ด๊ณ์์ด ๋ชจ๋ ์ฑ์ด WinUI ํ๋ก ํธ์๋๋ก ๋๋ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค.
์ด๋ค ์ข ๋ฅ์ ์ฑ์ WinUI 3.0์ ์ฌ์ฉํ๊ณ ์ถ์ต๋๊น? ์ Win32 ์ฑ์ ๋ง๋ค๊ณ MSIX๋ก ํจํค์งํ์๊ฒ ์ต๋๊น? WPF ์ฑ์ ์ ๋ณด๊ธฐ๋ฅผ ์ถ๊ฐํ์๊ฒ ์ต๋๊น? Fluent UI๋ก C++ MFC ์ฑ ํ๋ํ?
๋ ํ๋ฅญํ๊ณ ๋ช ํํ ๋ฌธ์(๋๋ ํ์ค ์ปจํธ๋กค์ ๊ธฐ๋ณธ ์ฝ๋์ ๋ํ ์ก์ธ์ค)๋ฅผ ์ฌ์ฉํ์ฌ ์ด์ ์ฑ์์ ๋ณด๋ค ์ ๊ทน์ ์ผ๋ก ์ ์ง ๊ด๋ฆฌ๋๋ ์ปจํธ๋กค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ก์ธ์คํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์ ๋ณด๋ ํ์ค ์ปจํธ๋กค์ ์ ์ฉํ ์ ์๋ ์๊ธฐ๋ฅผ ํจ์ฌ ๋ ์ฝ๊ฒ ํ์ ํ ์ ์์ต๋๋ค. ๋ด ์์ ์ ์ฌ์ฉ์ ์ปจํธ๋กค์ ๋กค๋งํด์ผ ํ ๋. ์๋ฅผ ๋ค์ด, WPF๋ก ๋น๋๋ ์ต๊ทผ ์ฑ์๋ ๋ช ๊ฐ์ง ๋ ์ง ์ ํ๊ธฐ๊ฐ ์์์ต๋๋ค. ํด๋น ์ปจํธ๋กค์ด ํฐ์น์ ๋ํด ์ ์๋ํ๋๋ก ํ๊ณ ํฌ๊ธฐ, ๊ธ๊ผด, ํ์ ์์ด์ฝ ๋ฑ์ ์ฌ์ฉ์ ์ง์ ํ๋ ๊ฒ์ ๋งค์ฐ ์ฑ๊ฐ์ ์ผ์ด์์ต๋๋ค. ๋ค์๊ณผ ๊ฐ์ ์ด์ ๋ก ์์ ๋ก๋๋งต์ ๊ฐ์ํ ๋ ์์ผ๋ก _default_๋ก ์ด๋ฌํ ์ข ๋ฅ์ ์ฑ์ WinUI๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝํฅ์ด ์์ต๋๋ค.
๋๋ ์ด๊ฒ์ด ๋ซํ๋ค๋ ๊ฒ์ ์์ง๋ง, ๋ด๊ฐ ์ ๊ธฐํ ๊ฐ์น๊ฐ ์์ง๋ง ์ฌ์ฉ์๋ค์ ์ํด ์ ๊ธฐ๋๋ ๋ช ๊ฐ์ง ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๋ง์ ์์ ๋ฐ์ดํฐ๋ก ์์ ํ๋ ์ฌ์ฉ์๋ฅผ ์ํ ์์ฐ์ฑ ํฅ์์ ๋๋ค.
ํ
์คํธ ์์:
์ฌ์ฉ์๊ฐ TextBox๋ฅผ ํธ์งํด์ผ ํ๋ ๊ฒฝ์ฐ ๋จผ์ TextBox๋ฅผ ํด๋ฆญํ์ฌ ์ง์ฐ๊ธฐ ๋ฒํผ์ ํ์ํ ๋ค์ ์ง์ฐ๊ธฐ ๋ฒํผ์ ํด๋ฆญํ์ฌ TextBox๋ฅผ ์ง์์ผ ํฉ๋๋ค. ์ด๊ฒ์ ๋ง์ ์์ ๋ฐ์ดํฐ๋ก ์์
ํ ๋ ๋งค์ฐ ๋นํจ์จ์ ์
๋๋ค. ์ฌ์ฉ์๊ฐ TextBox๋ฅผ ํด๋ฆญํ๊ฑฐ๋ ํญํ ๋ ํ
์คํธ๊ฐ ๊ฐ์กฐ ํ์๋์ด ๋ฎ์ด์ธ ์ค๋น๊ฐ ๋๋ค๋ฉด ์ข์ ๊ฒ์
๋๋ค.
๊ทธ๋ฆฌ๋๋ทฐ/๋ฆฌ์คํธ๋ทฐ:
Gridview ๋ฐ ListView๋ ์ฌ์ฉ์๊ฐ ์ปฌ๋ ์
์ ํจ๊ณผ์ ์ผ๋ก ํญํ ์ ์๋๋ก ํ์ฉํ์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
ListView๋ฅผ ์ฌ์ฉํ๋ฉด Tab์ด ๊ฐ์ ํ์ ์ปจํธ๋กค๋ก ์ด๋ํ ์ ์์ง๋ง ๋ค์ ์ปจํธ๋กค ํ์ผ๋ก Tab์ ์ด๋ํ ์ ์์ต๋๋ค. ๋์ ListView๊ฐ ํฌ์ปค์ค๋ฅผ ์๊ณ Tab์ด ์๊ฐ์ ํธ๋ฆฌ์ ๋ค์ ์ปจํธ๋กค๋ก ์ด๋ํฉ๋๋ค.
์ด๊ฒ์ ์ฌ์ฉ์๊ฐ ๋งค์ฐ ์ฑ๊ฐ์ ๊ฒ์ผ๋ก ์ ๊ธฐํ ๋ ๊ฐ์ง ๋ฌธ์ ์ ๋๋ค.
@์๋ง๋ฅด์ฝํ ๋ก
์ธ๊ธํ ๊ฐ ๊ฐ์ ์ฌํญ์ ๋ํด ์ ๋ฌธ์ ๋ฅผ ๋ง๋๋ ๊ฒ์ด ์ข์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ WinUI ํ์ ๊ตฌํํ๊ธฐ ์ ์ WinUI 3๋ฅผ ๋ฆด๋ฆฌ์คํด์ผ ํ๋์ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๊ธฐ ์ํด ๋ถ๋ฅํฉ๋๋ค.
์ด ๋ฌธ์ ๋ ์ฃผ๋ก ๊ฒ์๋ฌผ ์๋จ์ ์๋ 2๊ฐ์ "์ผ๋ฐ ์ง๋ฌธ"์ ๋ํ ํผ๋๋ฐฑ์ ์์งํ๊ธฐ ์ํด ์กด์ฌํ์ต๋๋ค.
WinUI์์ ๊ธฐ๋ณธ์ ์ผ๋ก Blazor ํธ์คํ ๋ชจ๋ธ์ ์ง์ํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด Blazor ์ปจํธ๋กค์ ํด๋ผ์ด์ธํธ/์๋ฒ ์น์์ ์ง์ ์ฌ์ฉํ๊ฑฐ๋ WinUI์์ ์ง์ ์ฌ์ฉํ ์ ์์ต๋๋ค. Blazor ๋ก๋๋งต์๋ WebView ์ปจํธ๋กค์ ์ฌ์ฉํ์ง ์๊ณ ์ด๋ฌํ ๋ฏธ๋ ๊ฐ๋ ์ด ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ปจํธ๋กค์ UI๊ฐ ๋ค์ดํฐ๋ธ๋ก ์คํ๋๋ ์ฝ๋์ .Net Standard ๋ถ๋ถ๊ณผ ํจ๊ป ๋ค์ดํฐ๋ธ๋ก ์คํ๋ฉ๋๋ค.
WinUI์์ ๊ธฐ๋ณธ์ ์ผ๋ก Blazor ํธ์คํ ๋ชจ๋ธ ์ง์
Blazor ์ธก์์ FWIW์์ ๋ค์๊ณผ ๊ฐ์ด ๋
ผ์ํ์ต๋๋ค.
https://github.com/dotnet/aspnetcore/issues/11082
ํ์คํ, ๊ทธ๊ฒ์ด ์ฐ๋ฆฌ์ ๊ณํ์ ๋๋ค.
@jevansaks ๋ฃจํ์ ๋ค์ด๊ฐ๋
WinUI 3.0์์ ํธ๋ ์ด ๋ฉ๋ด/์์ด์ฝ ๋ฉ๋ด์ ์ผ๊ด์ฑ์ ๋์ด๊ณ ์ถ์ต๋๋ค. ๋ชจ๋ ์ฑ์ ๋ค๋ฅธ ๊ฐ๊ฒฉ์ ๊ฐ์ง๋ฉฐ Win32 ์ฑ์ ๊ธ๊ผด ๋ ๋๋ง/๊ฐ๊ฒฉ/ํ ๋ง๋ฅผ ์ผ๊ด๋๊ฒ ๋ฐ๋ฅด์ง ์์ต๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ์ด๋ฏธ ์์ ํ์ญ์์ค!
๋ฐํ ํ๋ฉด์ WinUi๋ ์ฐฝ ํ์/์จ๊ธฐ๊ธฐ, ์ฐฝ ์์น, ์ฐฝ ํฌ๊ธฐ, ๋ํน/๋ํน ํด์ ๋ฑ ์ฐฝ ๊ด๋ฆฌ ๊ฐ๋ฅ์ฑ์ด ์๊ธฐ ๋๋ฌธ์ ์์ ํ ์ธ๋ชจ๊ฐ ์์ต๋๋ค.
@alexandrevk ์์ง ๋ฏธ๋ฆฌ๋ณด๊ธฐ์ ๋๋ค. ์๋์ฐ API ๋์์ธ์ ๋ณด์ จ๋์? https://github.com/microsoft/ProjectReunion/issues/157
์ฐฝ๊ตฌ ๊ณต์ง ๊ฒ์๋ฌผ์ ๋งํฌํด
@alexandrevk - Windows์์ ๋ค๋ฅธ ํ๋ ์์ํฌ/์ค์์ฒด์ธ ์ฝํ ์ธ ๋ฅผ ์ฌ์ฉํ ๋๋ฟ๋ง ์๋๋ผ Win32 ๋ฐ UWP์์ WinUI ์ฝํ ์ธ ์ ํจ๊ป ์ด๋ฌํ ์ ํ์ ์ฐฝ ์์ ์ ์ํํ ์ ์๋ Reunion์ฉ API๋ฅผ ํจ๊ป ์ ๊ณตํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ด๋ฌํ ์ฐฝ ๊ธฐ๋ฅ ์ค ์ผ๋ถ๋ ๋ ์ฝ๊ฒ ์ก์ธ์คํ ์ ์๋๋ก WinUI ์ฐฝ ํด๋์ค๋ก ์ถ์ํ๋ ์ ์์ง๋ง ์ด๋ ๋ ๋จผ ๊ธธ์ ๋๋ค. ์ฐฝ ์์ญ์ ๋ํ ๊ธฐ๋ฅ ์ฌ์์ ํ์ดํ์ ์์ต๋๋ค. ๊ณ์ ์ง์ผ๋ด ์ฃผ์ญ์์ค.
๊ฐ์ธ ์ฌ์ฉ์(์: ๋น๊ธฐ์
/ํ์ฌ) ๋ฐ C++๋ก๋ง ์๋ฐํ ๋งํ๋ฉด, ์ ๊ฐ ๊ณตํ์ ์ธ์น๋ ๊ณ ๋
ํ ๋ชฉ์๋ฆฌ์ผ์ง๋ผ๋ ์ด๋ฌํ ์๋ก์ด UI ์์คํ
์ค ํ๋๋ผ๋ UWP์ ๊ทธ๋ค์ด ๊ตฌ์ถํ ๊ทธ ๋์ฐํ ํจํค์ง ์์คํ
์ ๋ฌถ์ฌ ์๋ค๋ฉด, ๋น์ ์ด ๋ฌด์์ ํ๋ ํญ์ ์ด๋ ์์ ๊ฐํ๊ฒ ๋ ๊ฒ์
๋๋ค. (WinRT ๊ฒฝํ์ ๋ฐ๋ฅด๋ฉด ์์ง WinUI๋ฅผ ์๋ํ์ง ์์์ง๋ง ๋์๊ฒ๋ ๊ฑฐ์ ๋น์ทํ๊ฒ ๋ณด์
๋๋ค.)
์ค์ ๋ก UWP ์ฑ์ ์ฌ์ฉํ๋ ์ฌ๋์ ๊ฑฐ์ ๋๋ ์๋ฌด๋ ์๋ค๋ ์ฌ์ค์ ์์์ผ ํฉ๋๊น? (์ค์ ๋ก ๋๋ถ๋ถ์ afaik์์ ์ซ์ดํจ) '๋ค์ดํฐ๋ธ'๋ผ๊ณ ํ๋ฉด ์ ์ง์ ํ '๋ค์ดํฐ๋ธ'๊ฐ ์๋์ง์. ์: ๋ช ๊ฐ์ #include, .lib ๋๋ ๋ ๊ฐ๋ฅผ ์ฐ๊ฒฐํ๊ณ STANDARD C++๋ก ์ฑ์ ๋น๋ํ์ธ์.
1000๋ฒ์งธ๋ก win32๋ฅผ ๋ํํ๋ ๊ฒ์ ํผํ๊ธฐ ์ํด ํฌ๋ก์ค ํ๋ซํผ์ด ๋ฌธ์ ๊ฐ ๋์ง ์์ ๋ Qt์ ๊ฐ์ ๊ฒ์ ์์กดํด์ผ ํ๋ ๊ฒ์ ๊ณต์ ํ๊ธฐ ์ํด ๋ค์ ๋ก์์ง๊ณ ์์ต๋๋ค.
์ด์จ๋ ๋งค์ผ ์ธ์ด๋ฅผ ์ฌ์ฉํ์ง๋ง ์ฌ๊ธฐ์ ๋๊ธ์ ๋ฌ ๊ณณ์ด ์์ ๊ฒ์
๋๋ค.
@nl-n WinUI์ ๊ฐ์ฅ ํฐ ์ฅ์ ์ค ํ๋๋ UWP ์ฑ์ผ๋ก ์คํํ ํ์๊ฐ ์๋ค๋ ๊ฒ์
๋๋ค. ์ฌ์ค ์ด๊ฒ์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ 2๋ถํฐ ๊ฐ๋ฅํ์ต๋๋ค.
_ํ์ฌ_ msix๋ก ํจํค์งํด์ผ ํ์ง๋ง msix๋ ์ค์ ๋ก ์ฑ์ ๋ฐฐํฌ(๋ฐ ์
๋ฐ์ดํธ)ํ๋ ๊ฝค ๊ด์ฐฎ์ ๋ฐฉ๋ฒ์
๋๋ค.
@dotMorten ๊ทธ๊ฒ์ ํฐ ๋ฌธ์ ์ค ํ๋์
๋๋ค. ์คํ ์ด๋ฅผ ํตํ ์ฌ์ด๋ ๋ก๋ฉ/์ค์น๊ฐ ํ์ํฉ๋๋ค. Windows๋ฅผ ์ค์นํ๊ธฐ ์ (๋๋ ์ค์น ์งํ)์ ์คํ ์ด๋ฅผ ๋นํ์ฑํ/์ ๊ฑฐํ์ง ์์ ์ฌ๋์ด ํ ๋ช
๋ ์๋๋ฐ ์ด๋ป๊ฒ ๋ฐฐํฌํด์ผ ํฉ๋๊น?
๋๋ ๊ทธ๊ฒ์ด ๋ค์ ์์ฌํ์ ์ด๋ผ๋ ๊ฒ์ ์๊ณ ์์ง๋ง ์์ ์ ์ ๊ณตํฉ๋๋ค. ๋น๋ ๋๋ ํ ๋ฆฌ๋ฅผ ์์ถํ์ฌ ๋ฐฐํฌํ ์ ์์ด์ผ ํฉ๋๋ค(๋๋ ํ์ํ ๊ฒฝ์ฐ ์ค์น ํ๋ก๊ทธ๋จ).
๊ทธ๋ฐ ๋ค์ ํธํ์ฑ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๋ง์ ์ฌ๋๋ค์ด ์ฌ์ ํ W10 ์ค์น์กฐ์ฐจ ๊ฑฐ๋ถํฉ๋๋ค. ๊ทธ๋์ ๊ทธ๊ฒ๋ ์์ต๋๋ค...
๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ด 3.0์ด ํฅํ๊ณ ์๋ค๋ ์์์ ๋ฃ๋ ๊ฒ์ ์ข์ง๋ง xaml์ ์ซ์ดํ๋ ๋งํผ ํ์ํ ๋งํ ์ถ๊ฐ ์ฌํญ์ด ๋ ๊ฒ์
๋๋ค.
VS์ ์ ์ฒด 50GB UWP ์ํฌ๋ก๋๋ฅผ ์ค์นํ์ง ์๊ณ ๋ ์ป์ ์ ์์๊น์? ๐ (๊ณผ์ฅํ๊ฑด ์์ง๋ง ๊ทธ๋๋)
์ด ์ค๋ ๋์ ์์ ๋ถ๋ถ์์ @MarkIngramUK ๋ฅผ ์ธ์ฉํ๋ ค๋ฉด:
์ง๊ธ์ 2019๋ , ๋น ๋ฅธ ๋ค์ดํฐ๋ธ UI๋ฅผ ์ํ๊ณ
CreateWindowExW
, GDI ๋ฑ์ผ๋ก ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๋ง๋๋ ๊ฒ์ ์ฌ๊ฐํ๊ฒ ๊ณ ๋ คํ๊ณ ์ถ์ง ์์ต๋๋ค.
(์ฌ๋ฏธ์๊ฒ๋) ๋ง ๊ทธ๋๋ก ์ง๊ธ ๋น์ฅ ํด์ผ ํ๋ ์ผ์ด๋ฉฐ, ์๋ฆฌ๋งํผ ๊ณ ํต์ค๋ฝ์ต๋๋ค. :)
@nl-n ๋๊ฐ ๊ฐ๊ฒ์ ๋ํด ๋ญ๋ผ๊ณ ํ์ต๋๊น? MSIX๋ MSI์์ ์ค์นํ๋ ๊ฒ๊ณผ ํฌ๊ฒ ๋ค๋ฅด์ง ์์ต๋๋ค. ๋ฐ๋ก ์ฑ ์ค์น ํ๋ก๊ทธ๋จ์ ๋๋ค. ๋ ๋ฒ ํด๋ฆญํ์ฌ ์ค์นํฉ๋๋ค. ์์ ์ด ํ์ํ์ง ์์ต๋๋ค. 100% ์์ ์ ๊ฑฐ๋ ๋ณด์ฅํฉ๋๋ค(๊ฑฐ๋ํ ์๋ง์ ๋ง๋๋ MSI์ ๋ฐ๋).
๋๋ ์์ ์ ๋นํ์ฑํ/์ ๊ฑฐํ์ง ์๋ ์ฌ๋์ ํ ๋ช ๋ ๋ชจ๋ฆ ๋๋ค.
๊ทธ๋๋ ํํ ์ผ์ ์๋๋ค.
์ฐ๋ฆฌ๋ ๊ทธ๋ค์ ์ด๋ป๊ฒ ๋ฐฐํฌํด์ผํฉ๋๊น
์ฐ์ ์คํ ์ด๋ฅผ ๋นํ์ฑํํ์ง ์๋๋ก ์ฌ์ฉ์์๊ฒ ์๋ ค์ผ ํฉ๋๋ค.)
๋น๋ ๋๋ ํ ๋ฆฌ๋ฅผ ์์ถํ์ฌ ๋ฐฐํฌํ ์ ์์ด์ผ ํฉ๋๋ค.
MSIX๋ ์คํ ์ด ์์ด ์ค์นํ ์ ์์ต๋๋ค. ์ต์ Windows ๋ฒ์ ์ ์ฌ์ฉํ๋ฉด ์ฌ์ฉ์๊ฐ ์ด๋ฅผ ์ํด ์๋ฌด ๊ฒ๋ ํ์ฑํํ ํ์๊ฐ ์์ต๋๋ค. ๋ฌผ๋ก ํจํค์ง๊ฐ ์ ๋ขฐํ ์ ์๋ ์ธ์ฆ์๋ก ์ด์ ์ ์๋ช ๋ ๊ฒฝ์ฐ. ํ์ง๋ง ์ฌ์ฉ์๊ฐ PC์์ ์คํ ์ด๋ฅผ ์ ๊ฑฐํ ๊ฒฝ์ฐ MSIX/APPX AppInstaller๋ ์ ๊ฑฐํ ์ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ ๊ทธ๋ค์ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ชจ๋ ๊ฐ๋ณ์ฑ์ ์ํ์ง ์์ ๊ฒ์ ๋๋ค.
๋ง์ ์ฌ๋๋ค์ด ์ฌ์ ํ W10 ์ค์น์กฐ์ฐจ ๊ฑฐ๋ถํ๊ณ ์์ต๋๋ค.
๊ทธ๊ฒ์ ๊ทธ๋ค์ ์ ํ์ ๋๋ค. ๊ทธ๋ฐ๊ฐ ๋งํ๋ค.
VS์์๋ ์ ์ฒด 50GB UWP ์ํฌ๋ก๋
๋จ์ผ SDK๋ ์ฝ 3GB์ ๋๋ค. 10240๋ถํฐ ์์ํ์ฌ ๋ชจ๋ ๊ฒ์ ๋ค์ด๋ก๋ํ ํ์๋ ์์ต๋๋ค.
@nl-n ๋๊ฐ ๊ฐ๊ฒ์ ๋ํด ๋ญ๋ผ๊ณ ํ์ต๋๊น? MSIX๋ MSI์์ ์ค์นํ๋ ๊ฒ๊ณผ ํฌ๊ฒ ๋ค๋ฅด์ง ์์ต๋๋ค. ๋ฐ๋ก ์ฑ ์ค์น ํ๋ก๊ทธ๋จ์ ๋๋ค. ๋ ๋ฒ ํด๋ฆญํ์ฌ ์ค์นํฉ๋๋ค. ์์ ์ด ํ์ํ์ง ์์ต๋๋ค. 100% ์์ ์ ๊ฑฐ๋ ๋ณด์ฅํฉ๋๋ค(๊ฑฐ๋ํ ์๋ง์ ๋ง๋๋ MSI์ ๋ฐ๋).
๊ทธ๊ฒ์ Visual Studio๊ฐ 'Microsoft ์คํ ์ด๋ฅผ ํตํ ์ฌ์ด๋๋ก๋/์ค์น'์ ๋ํด ์ ๊ณตํ๋ ์ค๋ช ์์ ๋์จ ๊ฒ์ ๋๋ค. msix์์ ์ฐพ์ ์ ์ผํ ๋ค๋ฅธ ์ ๋ณด๋ msdn์์ ๊ฐ์ ธ์จ ๊ฒ์ ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก msix ํจํค์ง๋ ์๋๋ฐ์ค/๊ฐ์ํ๋ 'appx' ์์ฉ ํ๋ก๊ทธ๋จ์ ๋๋ค. , winapi์ ์ง์ ์๋ํ๋ ๋ชจ๋ ๊ฒ์ ๋ํ ๊ฑฐ์ ํฌ๋ฌ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ค์น๊ฐ ๊ฐ๋ฅ ํ๋ ค๋ฉด ์๋ช ์ด
๋ํ ๋๋ฌด ๋ง์ ์ฉ์ด๊ฐ ๋ค๋ฅธ ๊ฒ์ผ๋ก ์๊ฐ๋๋ ๊ต์ฐจ ์ ์ ์ผ ์ ์์ผ๋ฉฐ UWP์ ๋ํด ๋ง์ด ๋ชจ๋ฆ ๋๋ค.
๊ทธ๋๋ ํํ ์ผ์ ์๋๋ค.
์๊ฐ๋ณด๋ค ํํ๊ณ ์ด์ ๊ฐ ์์ต๋๋ค ๐
์ด์จ๋ ํ์ ํ๋ ค๋ ์๋๋ ์๋์์ผ๋ฏ๋ก ์ง๊ธ์ CreateWindowExW๋ฅผ ์์ฑํ๋ ๊ฒ์ผ๋ก ๋์๊ฐ๊ฒ ์ต๋๋ค ๐คฃ
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋ฌธ์ ๋ด์ฉ์์ ์ง๋ฌธํ์ ๋ด์ฉ์ ๋ํ ์ ์ ์ด๊ธฐ ์๊ฐ์ ๋๋ค.
์ ๋ ๋์์ธ ๋ฐ ์ฌ์ฉ์ ๊ด์ ์์ ์์ผ๋ฉฐ ์ฝ๊ฐ์ ๊ฐ๋ฐ ๊ฒฝํ์ด ์์ผ๋ฉฐ ๋น์ Silverlight/Windows Phone 7 ๊ฐ๋ฐ์ ๋งค์ฐ โโ๊ด์ฌ์ด ๋ง์์ง๋ง ์ง๊ธ์ ์ฝ๊ฐ ๋ถํ์ค๋ฅด๋ ๋๋์ด ๋ญ๋๋ค.
์ด๋ค ํ ํ๋ฆฟ์ด ๊ฐ์ฅ ํฅ๋ฏธ๋ก์ฐ์ ๊ฐ์?
ํ ํ๋ฆฟ ์์ด๋์ด ๋ชฉ๋ก์ ์์ฒญํ๊ธฐ ์ ์ WPF, UWP, WinForms, MFC ๋ฑ ๊ฐ ํ๋ ์์ํฌ์์ ๊ฐ์ฅ ํฌ๊ณ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ์ฑ์ ๋ํ ์ผ์ข ์ ๊ฐ์ฌ๊ฐ ํ์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ด๋ฌํ ์ฑ์ "์ค๋ฃจ์ฃ"์ ์กฐ์ฌํ๊ณ ์ผ๋ฐ์ ์ธ UX ์๋๋ฆฌ์ค๋ฅผ ํ์ ํ์ญ์์ค.
๋ด ๋จธ๋ฆฌ ๊ผญ๋๊ธฐ์๋ ๋ค์์ด ์์ต๋๋ค.
์ด๋ค ๋ชจ๋ ๋๋ ์ผ๋ถ๋ ์๋ฆผ/๊ด๋ฆฌ ์ผํฐ์ WinRT/UWP ์์คํ ํตํฉ์ ์ด์ ์ ์ป์ ์ ์์ต๋๋ค.
์ด๋ฌํ ๋ชจ๋ ์ ํ๋ก์ ํธ ํ ํ๋ฆฟ์ ๊ธฐ๋ณธ ์ ๊ณต Windows.Xaml ๋ค์์คํ์ด์ค, WPF ์ปจํธ๋กค ํ ๋ง ๋ฐ WinForms ๋น์ฃผ์ผ ์คํ์ผ์ ํผํ๊ณ FabricWeb/Fluent ์ปจํธ๋กค ๋์์ธ๊ณผ ์ผ์นํ๋ ์ ํ ํ๋ฆฟ ๋ฐ ๋น์ฃผ์ผ ์คํ์ผ์ ์ ํธํด์ผ ํฉ๋๋ค.
๋ํ ๊ธฐ์กด WPF ๋ฐ WinForms ์ฑ์ด ์๋ ๊ฐ๋ฐ์๊ฐ ๊ฐ๋จํ using ๋ฌธ ๋๋ ๋งค๋ํ์คํธ ํญ๋ชฉ์ผ๋ก ์ ์ปจํธ๋กค ๋์์ธ์ ์ ๊ณตํ๋ WinUI 3.0 ์ข ์์ฑ์ ์ถ๊ฐํ ์ ์๋ ์ฌ์ด ๋ฐฉ๋ฒ์ด ์์ด์ผ ํฉ๋๋ค.
XAML ์ ๋
Xaml Islands๊ฐ ๋ ์ฝ๊ฒ ๊ฐ๋ฅํด์ง์ ๋ฐ๋ผ ๊ธฐ์กด webview ์ปจํธ๋กค, ์์ ์ ํ๊ธฐ, XAML ๊ธฐ๋ฐ ๋ํ ์์๋ฅผ ์๋ก ์ถ๊ฐ ํ๋ ๊ฒ์ฒ๋ผ ์ฝ๊ฒ ๋์ฒดํ ์ ์๊ณ ๋ํ ์์ ๋๋ ๊ธฐ์กด C# ๋ฐ C++ ์ฝ๋๊ฐ ํธ์ถํ ์ ์๋ ํ์ค ์ปจํธ๋กค์ ์ ํํ ์ ์์ต๋๋ค. ๊ทธ๋ค๋ง์ ์ฝ๋ ์จ๊น์ด ์์ต๋๋ค.
Xbox Next ์ฑ, NavigationView, Master/Details, Hubs, Modern Ribbon, NavigationViewTop ๋ฐ Pivot๊ณผ ๊ฐ์ ์ต์ ์ฑ ๋ฐ ํ์ด์ง ํ ํ๋ฆฟ์ XAML ์์ผ๋๋๊ฐ ์ ์๋ฆฌ์ ์๊ณ ์ํ ์ฝํ ์ธ ๊ฐ ์๋ ๋ชจ๋ Windows ํ๋ ์ ํ ์ด์ ํ๋ซํผ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
ํ์ฌ UWP XAML์์ ๊ฐ๋ฅํ์ง ์์ ์ด๋ฌํ ์๋๋ฆฌ์ค๋ ์ด๋ฌํ ์์ ์ ๋ ์ฝ๊ฒ ํ๊ธฐ ์ํด ์ปจํธ๋กค ๋ฐ ํ ํ๋ฆฟ์ด ์์ด์ผ ํฉ๋๋ค.
Visual Studio ๋๋ ๋ค๋ฅธ ๋๊ตฌ๊ฐ ์๋์ผ๋ก ๋ค์์คํ์ด์ค๋ฅผ ์ ๋ฐ์ดํธํ๋ฉด ๋์์ด ๋ ๊น์?
๋๊ตฐ๊ฐ๊ฐ ํ์ฌ Windows 10 SDK๋ฅผ ์ฌ์ฉํ์ฌ ์ต์ ๋ฒ์ ์ Visual Studio์์ ํ๋ก์ ํธ๋ฅผ ์ด ๋ ๋ฌป๋ ์ง๋ฌธ์ด์ด์ผ ํฉ๋๋ค. ๋ฒํผ์ ๋๋ฅด๋ฉด ๋ค์์คํ์ด์ค์ ์ฌ์ฉ์ ๋์ฒดํ๊ฑฐ๋ ์ต์ํ ์ปจํธ๋กค์ด ์๋ ๊ฒฝ์ฐ ํ๋๊ทธ๋ฅผ ์ง์ ํฉ๋๋ค.
์ ํ๋ก์ ํธ์์๋ ๊ธฐ๋ณธ๊ฐ์ด์ด์ผ ํ๋ฉฐ Windows SDK์ ํฅํ ๋ฒ์ ๊ณผ ํจ๊ป ์ค์น๋ nuget ํจํค์ง์ฌ์ผ ํฉ๋๋ค.
WinUI 3์์ UWP ๊ตฌ์ฑ ์์๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ์ ํธํ๋ ์๋ฃจ์ ์ ๋ฌด์์ ๋๊น?
์๋ ์ ๋ฐ์ดํธ ๋ต๋ณ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์ ํ์ด์ง ๋ฐ ํ๋ก์ ํธ์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํฌํจํด์ผ ํ๋ฉฐ ์๋์ผ๋ก WinUI | ๋ค์์คํ์ด์ค ์ ๋ฐ์ดํธ๋ฅผ ์ํด ToDo ์ฃผ์ ์ถ๊ฐ | WinUI๋ก ์ด๋ํ์ง ๋ง์ญ์์ค .
์ด๋ค ์ข ๋ฅ์ ์ฑ์ WinUI 3.0์ ์ฌ์ฉํ๊ณ ์ถ์ต๋๊น?
์ฌ์ฉ์๋ก์ ์ ๋ Windows์์ ์คํ๋๋ ๋ชจ๋ ์ฑ์ด ์ด๋ค ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ๋ ๊ณตํต UI์ UX๋ฅผ ๊ณต์ ํ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
๋ ์ง์คํธ๋ฆฌ๋ฅผ ์ด์ง๋ฝํ๊ณ ์ ํฌ๋ฅผ ๋จ๊ธฐ์ง ์๊ณ ์ฑ์ ์ค์นํ๊ณ ์ถ์ต๋๋ค. (๊ทธ๋์ 100์ฃผ๋ )
๋ชจ๋ ์ฑ์ ์คํ ์ด ๋ด์์ ๋๋ Centennial ์ ํ ์ค์น ํ๋ก๊ทธ๋จ์์ ์ค์นํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ๋ชจ๋ ์ฑ์ ์์คํ ๋ฐ Windows ํด๋๋ฅผ ๊ฐ์ํํฉ๋๋ค.
Fluent UI๋ก C++ MFC ์ฑ ํ๋ํ?
์ํฌ๋ฆด์ WPF, WinForms ๋ฐ MFC ์ฑ์์ ์ฌ์ฉํ ์ ์์ด์ผ ํ๋ฉฐ WinUI 3.0 ์ข ์์ฑ ๋๋ ๋งค๋ํ์คํธ๋ฅผ ํตํด ๊ธฐ๋ณธ ์ ํ ํ๋ฆฟ์ ํฌํจ๋์ด์ผ ํฉ๋๋ค. CommonControls ๋ฐ ์ฐฝ ์คํ์ผ์ ์ํฌ๋ฆด ๋ฐ ํ์ฅ๋ ์ ๋ชฉ ํ์์ค์ ์ฌ์ฉํด์ผ ํฉ๋๋ค(ํ์ฌ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ๋์๊ฐ๊ธฐ ์ํด ์ฌ์ ์ํ ์ ์์).
Microsoft์ Win32 ๋น UWP ์ฑ์ ๋ชจ๋ WinUI 3.0์ผ๋ก ๋ค์ ์ปดํ์ผํด์ผ ์ํฌ๋ฆด ์ฐฝ ํ๋ ์, ๊ธฐ๋ณธ ๋ฉ๋ด, ThemeShadows, ์ปจํ ์คํธ ๋ฉ๋ด , ํ ์คํธ ํ๋, ์งํ๋ฅ ํ์์ค ๋ฑ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๊ทธ๋ฐ ๋ค์ ๊ธฐ์กด ์ฑ์ WinUI 3.0 ์ด์์ ๋๋กญํ์ฌ ๋ชจ๋ ์ปจํธ๋กค์ ๋ชจ์์ ์ ๋ฐ์ดํธํ๊ฑฐ๋ ์ ์ฒด UI๊ฐ ์ ๋ฐ์ดํธ๋ ๋๊น์ง ํ ๋ฒ์ ํ๋์ ๋ํ ์์๋ฅผ ์ ํ์ ์ผ๋ก ์ ์ฉํ๋ ๊ธฐ๋ฅ์ด ํ์ํฉ๋๋ค.