LukeMauiMarkup Library ๊ฐœ๋ฐœ๊ธฐ

์ง€์› net8.0๋ถ€ํ„ฐ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

1.LukeMauiMarkup Nuget ์„ค์น˜


์ฐธ๊ณ ) ์„ค์น˜ ์‹œ CommunityToolkit.Mvvm, Markup ์ตœ์‹ ๋ฒ„์ „์ด ๊ฐ™์ด ๋˜๊ธฐ ์„ค์น˜๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณ„๋„๋กœ ์„ค์น˜ํ•  ํ•„์š”์—†์Šต๋‹ˆ๋‹ค.

2. MauiProgram BuilderUse ์ฒ˜๋ฆฌ

image

3. MainPage์—์„œ์˜ RootPage ์ƒ์„ฑ

image
์ฐธ๊ณ ) ๋‹จ์ผ ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค ๊ฒฝ์šฐ์—” MainPage = new MainPage()๋กœ ํ•  ๊ฒƒ

4. MainPage์˜ ์ƒ์†ํด๋ž˜์Šค๋Š” LukeContentPage๋กœ ๋ณ€๊ฒฝ

image

์ถ”์ƒ๋ฉค๋ฒ„ ์ถ”๊ฐ€ ๊ตฌํ˜„

image
๋นŒ๋“œ ํ•จ์ˆ˜์ชฝ์€ ํ•ซ๋ฆฌ๋กœ๋“œ ๋˜๋Š” ์‹œ์ ์— ๊ทธ๋ฆฌ๊ณ ์ž ํ•˜๋Š” ์ปจํŠธ๋กค์„ ๋„ฃ์Šต๋‹ˆ๋‹ค.

11๊ฐœ์˜ ์ข‹์•„์š”

Global Using ํด๋ž˜์Šค ํŒŒ์ผ ์ถ”๊ฐ€ํ•˜๋ฉด
using๋„ ์ค„์ผ ์ˆ˜ ์žˆ๊ณ  Grid ๊ด€๋ จ Columns.Define, Rows.Define ์ฒ˜๋ฆฌํ•  ๋•Œ ์ธํ…Œ๋ฆฌ์„ผ์Šค๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ์œผ๋‹ˆ
๋งค๋ฒˆ ์‚ฌ์šฉํ•˜๋Š” Using์€ ๋ฏธ๋ฆฌ ๋“ฑ๋กํ•˜์‹œ๋Š”๊ฑธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

// MVVM Toolkit
// .NET MAUI Markup
global using LukeMauiMarkup;
global using LukeMauiMarkup.Exentions;
global using CommunityToolkit.Maui.Markup;
global using CommunityToolkit.Mvvm.ComponentModel;
global using CommunityToolkit.Mvvm.Input;
// Static
global using static CommunityToolkit.Maui.Markup.GridRowsColumns;
global using static Microsoft.Maui.Graphics.Colors;
global using MC = Microsoft.Maui.Controls;
6๊ฐœ์˜ ์ข‹์•„์š”

Maui์—์„œ๋Š”
HexString๊ฐ’์œผ๋กœ ์ƒ‰์ƒ์„ ํ‘œํ˜„ํ•˜๊ณ ์ž ํ•  ๋•

โ€œ#9da2e8โ€ ์„ ๊ธฐ์ž…ํ•ด์ค˜์•ผํ•ฉ๋‹ˆ๋‹ค.
#์„ ๋บ„ ๊ฒฝ์šฐ์—” ์˜ค๋ฅ˜๋กœ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๊ฐ€ ๋˜์ง€ ์•Š์•„์„œ ์•ฑ ํฌ๋ž˜์‰ฌ ์•ฑ์ด ์ข…๋ฃŒ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

๊ธฐ์กด ๋ฐฉ์‹
image

๋ณ€๊ฒฝ ๋ฐฉ์‹
image

์•„๋ž˜์™€ ๊ฐ™์ด Extentions ํด๋ž˜์Šค๋ฅผ ๊ด€๋ฆฌํ•จ์œผ๋กœ ์จ ๋ถ€๋ชจ์ƒ์†์ด ์ปจํŠธ๋กค, ํŽ˜์ด์ง€์—์„œ๋„ ๊ฐ€์ ธ๋‹ค ์“ธ ์ˆ˜ ์žˆ๊ฒŒ
์ถ”๊ฐ€ํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

4๊ฐœ์˜ ์ข‹์•„์š”

1.0.0.3 ์ ์šฉ ์™„๋ฃŒ

3๊ฐœ์˜ ์ข‹์•„์š”

์—๋ฎฌ๋ ˆ์ดํ„ฐ์—์„œ๋Š” ์ข…์ข… hotReload๊ฐ€ ๋™์ž‘๋˜์ง€ ์•Š๊ฑฐ๋‚˜ ํฌ๋ž™๋˜๋Š” ์ด์Šˆ๊ฐ€ ์žˆ์–ด์„œ

์ž„์‹œ๋กœ Window๋กœ ๊ฐœ๋ฐœ์„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

ํ˜ธ๊ฐฑ๋…ธ๋…ธ ์•ฑ ๋งŒ๋“ค์–ด๋ณด๋ฉด์„œ
ํ˜„์žฌ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์ด ์žˆ๋Š”์ง€ ํƒ์ƒ‰ ์ค‘์ž…๋‹ˆ๋‹ค. :dark_sunglasses:

ํ”„๋กœ์ ํŠธ์†Œ์Šค๋Š”

7๊ฐœ์˜ ์ข‹์•„์š”

Border์— ๋Œ€ํ•œ ๊ฐ’์€ ์„ ์–ธํ˜•์ด ์•„๋‹ˆ๋”๊ตฐ์š”โ€ฆ
๊ทธ๋ž˜์„œ ํ™•์žฅ๋ฉ”์„œ๋“œ๋กœ ๋งŒ๋“ค์–ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ Maui.Markup์—์„ โ€ฆ
image

๋ณ€๊ฒฝ
image

๋‹ค๋ฅธ ์ฝ”๋“œ์ž„์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์•„๋ž˜์™€๊ฐ™์ด ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋กœ ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ ์ฝ”๋“œ
image

๋™์ž‘ ์ด๋ฏธ์ง€
image

๋ฒ„์ „ 1.0.0.5 ์ดํ›„๋ถ€ํ„ฐ ๊ตฌํ˜„ํ• ์ˆ˜์žˆ๋„๋ก ์—…๋ฐ์ดํŠธ ์˜ˆ์ •์ž…๋‹ˆ๋‹ค!

5๊ฐœ์˜ ์ข‹์•„์š”

Popup ํ™”๋ฉด ๊ฐœ๋ฐœ

์œ„ ํ™”๋ฉด ์ž‘์—…ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์—ฌ๋Ÿฌ ๊ณ ๋ฏผ์„ ๋์— ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(Plugin.Maui.Popup)๋ฅผ ํฌํ•จํ•˜์—ฌ ํŒ์—…ํŽ˜์ด์ง€ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค๊ธฐ๋กœ ๊ฒฐ์ •ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

image
(LukeContentPage์™€ ๋˜‘๊ฐ™์•˜๊ธฐ ๋–„๋ฌธ์— ํ–ฅํ›„์—” ๋ณ„๋„๋กœ ๊ณตํ†ต ํด๋ž˜์Šค๋กœ ๋ฝ‘์•„ ์ฒ˜๋ฆฌํ•˜๋ฉด ๊น”๋”ํ•˜๊ฒŒ ๊ตฌํ˜„ ์˜ˆ์ •)

NavigattionPage์˜ PushModal HotReload ๊ธฐ๋Šฅ ์ด์Šˆ(ํ•ด๊ฒฐ์™„๋ฃŒ)

NavigatePage์˜ ๊ฒฝ์šฐ Push์™€ PushModal์— ์žˆ์–ด์„œ HotReload ๊ตฌํ˜„ ๋ฐฉ์‹์ด ๋‹ฌ๋ž์Šต๋‹ˆ๋‹ค.

image

ํ˜„์žฌ ๋„ค๋น„๊ฒŒ์ด์…˜์˜ CurrentPage์˜ ๊ฒฝ์šฐ ๋™์ž‘๋˜๋Š” ๊ตฌ๊ฐ„์ž…๋‹ˆ๋‹ค.
Push ํŽ˜์ด์ง€๋ฅผ ๋„์šธ ๊ฒฝ์šฐ์—๋Š” ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘์ด ๋˜์ง€๋งŒ,
PushModal ํŽ˜์ด์ง€๋ฅผ ๋„์šธ ๊ฒฝ์šฐ CurrentPage๋Š” PushModal์„ ๋„์šด ํŽ˜์ด์ง€๋ฅผ ๋œปํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•˜์˜€์Šต๋‹ˆ๋‹ค.

image

์œ„์™€ ๊ฐ™์ด TryGetModalStackPageํ•จ์ˆ˜(๊ธฐ์กด HotReload ์˜ˆ์ œ) ๋ฅผ ์‘์šฉํ•˜์—ฌ ModalStack์˜ ๋งˆ์ง€๋ง‰ ํŽ˜์ด์ง€๋ฅผ ๋ถˆ๋Ÿฌ์™€์„œ Buildํ•จ์ˆ˜ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ํ•ด๊ฒฐํ•˜์˜€์Šต๋‹ˆ๋‹ค.






Screenshot 2023-12-01 at 10.43.08


์•Œ๊ฒŒ๋œ ์ 

WPF์™€ MAUI๋Š” ๋น„์Šทํ•˜๋‹ค!?

@jamesnet214 ๋‹˜๊ป˜์„œ ํ•ญ์ƒ ๋ง์”€ํ•˜์‹  CustomControl(์‚ฌ์šฉ์ž์ง€์ •์ปจํŠธ๋กค)์˜ ์ค‘์š”์„ฑ์— ๊นŠ์ด ๊ณต๊ฐํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ Maui์™€ ์ ‘์  ๋ถ€๋ถ„์ด ์žˆ๋Š”์ง€ ์กฐ๊ธˆ์ด๋‚˜๋งˆ ๊ด€์‹ฌ์œ ์ง€ํ•˜๋ฉฐ ์ง€์ผœ๋ณด๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‹ค ์ด๋ฒˆ Slog๋ฅผ ํ†ตํ•ด Popup ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์†Œ์Šค ๋ถ„์„ ์ค‘ WPF์™€ ๋น„์Šทํ•œ์ ์„ ๋ฐœ๊ฒฌํ•˜์˜€์Šต๋‹ˆ๋‹ค.
Maui์—์„œ WPF์˜ ๊ฐ ์ปจํŠธ๋กค๋งˆ๋‹ค ์†์„ฑ์„ ์ง€์šฐ๊ณ  ๋‹ค์‹œ ๊ทธ๋ฆด ์ˆ˜ ์žˆ๋Š” Template ์ด ์—†๋Š” ์ค„ ์•Œ์•˜๋Š”๋ฐ
ControlTemplate์ด ๊ทธ ๊ธฐ๋Šฅ์„ ํ•˜๊ณ  ๋Œ€์ฒดํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
ControlTemplate๋Š” ContentPage์™€ ContentView ์กด์žฌํ•˜์˜€์Šต๋‹ˆ๋‹ค.

์ฆ‰,

WPF์˜ Window = Maui์˜ ContentPage
WPF์˜ ContentControl or UserControl = Maui์˜ ContentView

ํ•˜์ง€๋งŒ ์•„์‰ฝ๊ฒŒ๋„โ€ฆ Maui์—์„œ ContentPage์™€ ContentView, ํŠน์ •์ปจํŠธ๋กค(RadioButton) ์™ธ ๋‹ค๋ฅธ ์ปจํŠธ๋กค์—์„œ๋Š” ControlTemplate๋“ค์ด ์กด์žฌํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

ControlTemplate์€ Page์™€ Layout์˜ ๊ณ ์œ  BindableProperty๋กœ ์กด์žฌํ•˜๋Š” ๋ฐ˜๋ฉด
๋‹ค๋ฅธ ์ปจํŠธ๋กค์€ ํŠน๋ณ„ํ•˜์ง€ ์•Š๋Š” ์ด์ƒ ์ƒ์œ„๊ณ„์ธต์ด ์ „๋ถ€ View๋กœ ์ƒ์†๋ฐ›๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ํŠน์ •์ปจํŠธ๋กค ์ธ RadioButton์€ ControlView์™€ ๊ฐ™์€ Layout์„ ์ƒ์†๋ฐ›๊ณ  ์žˆ๋Š”๊ฒƒ์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค.
RadioButton๋Š” ์ปค์Šคํ…€์„ ํ†ตํ•ด ๋งŒ๋“ค์–ด์ง„ ์ปจํŠธ๋กค์ด๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

(์ ์  ํŒŒ๊ณ ๋“ค๋‹ค๋ณด๋‹ˆ ๋‚ด์šฉ์ด ๊ธธ์–ด์งˆ ๊ฑฐ ๊ฐ™์•„ ๋‹ค์Œ ๊ธฐํšŒ์— ๋‹ค๋ฅธ ๊ฒŒ์‹œ๊ธ€์„ ํ†ตํ•ดโ€ฆ๊ณต์œ ํ•˜๋Š”๊ฒƒ์œผ๋กœํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.)

(์ถ”์ธก) ํŒ์—…์ฐฝ์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ContentPage๋Š” ์™œ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์„๊นŒ?

๋Œ€๊ฒŒ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ๋งŒ๋“ค์–ด์ง„ Popup์€ ํ˜ธ์ถœ ์‹œ PushModal ๋ฐฉ์‹์œผ๋กœ Page๋ฅผ ๋„์›๋‹ˆ๋‹ค.

์ œ๊ฐ€ HotReload ๊ตฌํ˜„ํ–ˆ์„ ๋•Œ ์ด์Šˆ์™€ ๋น„์Šทํ•œ ์ƒํ™ฉ์œผ๋กœ PushModal์˜ ๊ฒฝ์šฐ ๋„์–ด์ง„ ContentPage๋Š” NavigationPage์˜ CurrentPage์— ํ•ด๋‹น๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— HotReload๊ฐ€ ๋™์ž‘๋˜์ง€ ์•Š๋Š”๊ฒƒ์œผ๋กœ ํŒŒ์•…๋ฉ๋‹ˆ๋‹ค.

(์™ ์ง€ ์ด๊ฑฐ Maui Github์— ๋ฒ„๊ทธ์ด์Šˆ๋กœ ์˜ฌ๋ฆฌ๋ฉด ํ•ด๊ฒฐ์ด ๊ฐ€๋Šฅํ• ๊ฑฐ ๊ฐ™์€โ€ฆ)

7๊ฐœ์˜ ์ข‹์•„์š”

๋ฉ‹์ง„ ์Šฌ๋กœ๊ทธ ์ž…๋‹ˆ๋‹ค!

4๊ฐœ์˜ ์ข‹์•„์š”

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ํž˜์ด๋‚˜๋„ค์š”! :fire: :fire: :fire:

4๊ฐœ์˜ ์ข‹์•„์š”

Q : Markup์—์„œ์˜ ๊ณตํ†ต ์ปจํŠธ๋กค์˜ ๊ฒฝ์šฐ ์ปจํŠธ๋กค ํด๋ž˜์Šค ๋ฌถ์–ด์„œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์„๊นŒ?

image
๋ฐ”๋กœ ์ด ํ™”๋ฉด์„ ๋ณด๊ณ 
โ€˜๊ณตํ†ต ์ปจํŠธ๋กค๋กœ ๋ฌถ์–ด์„œ ์ฒ˜๋ฆฌํ•ด์•ผ์ง€~โ€™ ๋ผ๋Š” ์ƒ๊ฐ์œผ๋กœ
๋ช‡ ์ผ๊ฐ„์— ๊ณ ๋ฏผ๊ณผ ํ…Œ์ŠคํŠธ๋ฅผ ํ†ตํ•ด ๋‚ด๋ฆฐ ๊ฒฐ๋ก ์€


ํ•  ์ˆ˜ ๋„ ์žˆ๊ณ , ๋ชปํ•  ์ˆ˜ ๋„ ์žˆ๊ณ ? ์ž…๋‹ˆ๋‹ค.
์ฐจ์ด๋Š” HotReload๋ฅผ ์“ฐ๊ณ  ์•ˆ์“ฐ๊ณ ์˜ ์ฐจ์ด์˜€๊ธฐ ๋•Œ๋ฌธ์— ๋‚ด๋ฆฐ ๊ฒฐ๋ก ์ด์˜€์Šต๋‹ˆ๋‹ค.


ํ˜„์žฌ ์ œ๊ฐ€ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ๋Š” LukeMauiMarkup์˜ ๊ฒฝ์šฐ๋„ ๊ทธ๋ ‡๊ณ  ํ˜„์žฌ Community.Maui.Markup์—์„œ์˜ ์ƒ˜ํ”Œ์—์„œ๋„ ๋™์ผํ•œ ๋‹ต์ผ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

image
์œ„์˜ ํ•จ์ˆ˜๋Š” ๋ชจ๋“  ํด๋ž˜์Šค์—์„œ์˜ ๋ณ€ํ™”๋ฅผ HotReload๋ฅผ ํ†ตํ•ด์„œ ์•Œ๋ ค์ฃผ๊ณ  ์žˆ๋Š”๋ฐ์š”.

image

ํ•ด๋‹น ํด๋ž˜์Šค์˜ ๋ณ€ํ™”๋Š” ๊ฐ์ง€ํ•ฉ๋‹ˆ๋‹ค๋งŒ ๋”ฑ ๊ฐ์ง€๊นŒ์ง€์ž…๋‹ˆ๋‹ค.
Grid๋กœ๋„ ์ƒ์†ํ•ด๋ณด์•˜๊ณ , ContentView๋กœ๋„ ์ƒ์†ํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.
Page๋ผ๋Š” ์ƒ์†์ด ๋œ ๊ฒฝ์šฐ์—๋งŒ ํ™”๋ฉด์„ ๋‹ค์‹œ ๊ทธ๋ ค์ค๋‹ˆ๋‹ค.

Page ๋‚ด Content ์˜์—ญ์— ๋Œ€ํ•œ ๋ถ€๋ถ„์—์„œ๋งŒ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ณ€๊ฒฝ์ด ๊ฐ€๋Šฅํ•˜๊ณ  ๊ทธ ์™ธ์ ์œผ๋กœ
์™„์ „ํžˆ ๋ถˆ๋ณ€์˜ ๊ฐ’์ธ ๊ฒฝ์šฐ์—๋Š” ํด๋ž˜์Šค์— ๊ณ ์œ ๊ฐ’์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

image

4๊ฐœ์˜ ์ข‹์•„์š”

๊ฐœ๋ฐœ์˜ ๋Œ€์„ธ๋ฅผ ๋”ฐ๋ฅด๊ธฐ ์œ„ํ•ดโ€ฆ
image
image

3๊ฐœ์˜ ์ข‹์•„์š”

ํ˜„์žฌ ์ž‘์—…

Screenshot 2023-12-05 at 22.55.19

Entry - Maui.FreakyControl ไธญ FreakyTextInputLayout

3๊ฐœ์˜ ์ข‹์•„์š”

๋ฒ„ํŠผ์˜ ์•„์ด์ฝ˜์„ ์ถ”๊ฐ€

image

4๊ฐœ์˜ ์ข‹์•„์š”

์ตœ๊ทผ ๋ณธ ์˜์ƒ๋“ค ์ค‘ ์—ฌ๋Ÿฌ ์˜์ƒ๋“ค์ด ์žˆ๋Š”๋ฐ ๊ทธ ์ค‘ ๊ฐ๋ช…๊นŠ๊ฒŒ ๋ณธ ์˜์ƒ ์ž…๋‹ˆ๋‹ค.

์š”์•ฝ : ์„œ๋น„์Šค๊ฐ€ ์ปค์ง€๋ฉด ์ปค์งˆ์ˆ˜๋ก ํŽ˜์ด์ง€๋“ค์€ ๋งŽ์•„์ง€๊ธฐ ๋•Œ๋ฌธ์—
์—ฐ๊ณ„์„ฑ์„ ์ฐพ๊ธฐ ์–ด๋ ค์›Œ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋‚ด์šฉ


์œ„ ๋ฐฉ๋ฒ•์„ ์ œ ํ† ์ดํ”„๋กœ์ ํŠธ์— ์ ์šฉ์„ ํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.
์•„๋ž˜์™€ ๊ฐ™์ด Signup ๋‹จ๊ณ„ (2๊ฐœ์˜ ํŽ˜์ด์ง€)๋ฅผ ๊ตฌ์„ฑํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.
Screenshot 2023-12-12 at 14.04.08


SinupService

  • Sinup์— ํ•„์š”ํ•œ ํŽ˜์ด์ง€์˜ ๊ตฌ์„ฑ๊ณผ ๊ฐ ํŽ˜์ด์ง€ ๋ณ„๋กœ ์ž‘์„ฑ๋˜๋Š” ๋ฐ์ดํ„ฐ๋“ค์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • Next ํ•จ์ˆ˜ ํ˜ธ์ถœ ํ•  ๋•Œ๋งˆ๋‹ค ๋“ฑ๋ก ๋œ ํŽ˜์ด์ง€๋“ค์„ ๋‹จ๊ณ„๋ณ„๋กœ Navigation ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

PageContainer

  • ํŽ˜์ด์ง€(๋ทฐ)์™€ ๋ทฐ๋ชจ๋ธ์„ ํ•˜๋‚˜์˜ ํด๋ž˜์Šค์—์„œ ๊ด€๋ฆฌํ•  ๋ชฉ์ ์ด๋ฉฐ, ์ƒ์„ฑ๊ณผ ๋™์‹œ์— ํŽ˜์ด์ง€์— ๋ทฐ๋ชจ๋ธ์„ ์—ฐ๊ฒฐํ•ด์ฃผ๋Š” ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์˜์—ญ์ž…๋‹ˆ๋‹ค.
    image
4๊ฐœ์˜ ์ข‹์•„์š”

์˜ค๋Š˜ ์•„์นจ xamarin ๋‹จํ†ก๋ฐฉ์—์„œ
@honeyhead ๋‹˜๊ป˜์„œ ์•„์ด๋””์–ด๋ฅผ ์ œ๊ณตํ•ด์ฃผ์…จ๋Š”๋ฐ

โ€˜C#12 ์ปฌ๋ ‰์…˜ ํ‘œํ˜„์‹์„ ์‘์šฉํ•ด์„œ ์ปจํŠธ๋กค์„ ์ถ”๊ฐ€ํ•ด๋ณด๋ฉด ์–ด๋–จ๊นŒ?โ€™ ๋ผ๋Š”
์ƒ๊ฐ์—์„œ ์ง„ํ–‰ํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.

์ปฌ๋ ‰์…˜ ํ‘œํ˜„์‹ ์ ์šฉ ์ „
image

์ปฌ๋ ‰์…˜ ํ‘œํ˜„์‹ ์ ์šฉ ํ›„
image

Layout ์ค‘ ์œ ์ผํ•˜๊ฒŒ ์ œ ๋ฉ‹๋Œ€๋กœ ๋งŒ๋“ค์–ด์„œ ๊ฐ€์ง€๊ณ  ๋†€ ์ˆ˜ ์žˆ๋Š”
HStack๊ณผ VStack์— ์‹œํ—˜ ์‚ผ์•„ ๋งŒ๋“ค์–ด ๋ฐฐํฌํ•ด๋ณผ ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

p.s ๋‹ค๋ฅธ Layout์„ ์ƒ์†๋œ ์ปจํŠธ๋กค์€ ๊ณ ๋ฏผ์„ ์ข€ ๋” ํ•ด๋ด์•ผํ•  ๊ฑฐ๊ฐ™๋„ค์š”โ€ฆ:frowning:

5๊ฐœ์˜ ์ข‹์•„์š”