Maui: [์ˆ˜์ •๋จ] MVU ์Šคํƒ€์ผ์˜ ์ฝ”๋”ฉ๋œ UI๊ฐ€ ์ •๋ง ํ•„์š”ํ•œ๊ฐ€์š”?

์— ๋งŒ๋“  2020๋…„ 05์›” 29์ผ  ยท  16์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: dotnet/maui

MAUI๋Š” UI๋ฅผ ๋””์ž์ธํ•˜๋Š” ํ•œ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•, ์ฆ‰ XAML ๋งŒ ๊ณ ์ˆ˜ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

Blazor Syntex ๋Š” ๊ดœ์ฐฎ์ง€๋งŒ MVU๋Š” ๋‚˜์—๊ฒŒ ์™„์ „ํžˆ ๋ถˆํ•„์š”ํ•œ ํ˜ผ๋ž€์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. Flutter ๊ฐœ๋ฐœ์ž๋ฅผ ๋Œ์–ด๋“ค์ด๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด๋ผ๋ฉด Flutter๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ•˜๊ฒŒ ํ•ด์ฃผ์„ธ์š”. XAML์˜ ์•„๋ฆ„๋‹ค์›€์„ ํŒŒ๊ดดํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

_[์—…๋ฐ์ดํŠธ]_
image

Xaml </> blazor

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

@davidortinau ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ์—์„œ ๋งํ–ˆ๋“ฏ์ด. MAUI ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์€ ์—„์ฒญ๋‚œ ํ˜ผ๋ž€์„ ์•ผ๊ธฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์€ ์ด์ œ MVU = ์ฝ”๋“œ/DSL๋กœ ๋ณด๊ธฐ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ MVU๊ฐ€ ๋ฌด์—‡์ธ์ง€์™€ ์™„์ „ํžˆ ๋…๋ฆฝ์ ์ž…๋‹ˆ๋‹ค. MVU๋Š” XAML๋กœ ์™„๋ฒฝํ•˜๊ฒŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋ทฐ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค.
๋ชจ๋ธ๊ณผ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์•„ ์ƒˆ ๋ชจ๋ธ์„ ๋นŒ๋“œํ•˜๋Š” ๋ถˆ๋ณ€ ๋ชจ๋ธ + ์—…๋ฐ์ดํŠธ ๊ธฐ๋Šฅ๊ณผ ๋ชจ๋ธ์„ ์ง์ ‘ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ์—…๋ฐ์ดํŠธ ๋ฃจํ”„์— ์ƒˆ ๋ช…๋ น(๋ฉ”์‹œ์ง€)์„ ๋ณด๋‚ด๋Š” ๋ทฐ ๊ธฐ๋Šฅ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์— ๊ด€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ชจ๋“  16 ๋Œ“๊ธ€

Flutter์—๋Š” Xamarin.Forms์—์„œ ์‚ฌ๋žŒ๋“ค์„ ๋Œ์–ด๋“ค์ด๋Š” ๋ฐ ์ „๋…ํ•˜๋Š” ์ „์ฒด ํŽ˜์ด์ง€ ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ์šฐ๋ฆฌ๊ฐ€ ๊ฒฝ์Ÿ์„ ๋ฌด์‹œํ•ด์•ผ ํ•œ๋‹ค๊ณ  ๋งํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ง„์งœ?

๋ธ”๋ ˆ์ด์ € ๋ฐ”์ธ๋”ฉ์ด ์˜ˆ๋ป์š”! ์ €๋Š” ์ด์ œ ๋ง‰ ์‹œ์ž‘ํ–ˆ์œผ๋ฉฐ Flutter๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๋‹จ์ˆœ์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

@davidortinau ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ์—์„œ ๋งํ–ˆ๋“ฏ์ด. MAUI ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์€ ์—„์ฒญ๋‚œ ํ˜ผ๋ž€์„ ์•ผ๊ธฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์€ ์ด์ œ MVU = ์ฝ”๋“œ/DSL๋กœ ๋ณด๊ธฐ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ MVU๊ฐ€ ๋ฌด์—‡์ธ์ง€์™€ ์™„์ „ํžˆ ๋…๋ฆฝ์ ์ž…๋‹ˆ๋‹ค. MVU๋Š” XAML๋กœ ์™„๋ฒฝํ•˜๊ฒŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋ทฐ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค.
๋ชจ๋ธ๊ณผ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์•„ ์ƒˆ ๋ชจ๋ธ์„ ๋นŒ๋“œํ•˜๋Š” ๋ถˆ๋ณ€ ๋ชจ๋ธ + ์—…๋ฐ์ดํŠธ ๊ธฐ๋Šฅ๊ณผ ๋ชจ๋ธ์„ ์ง์ ‘ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ์—…๋ฐ์ดํŠธ ๋ฃจํ”„์— ์ƒˆ ๋ช…๋ น(๋ฉ”์‹œ์ง€)์„ ๋ณด๋‚ด๋Š” ๋ทฐ ๊ธฐ๋Šฅ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์— ๊ด€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

MAUI๋Š” UI๋ฅผ ๋””์ž์ธํ•˜๋Š” ํ•œ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•, ์ฆ‰ XAML ๋งŒ ๊ณ ์ˆ˜ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

Blazor Syntex ๋Š” ๊ดœ์ฐฎ์ง€๋งŒ MVU๋Š” ๋‚˜์—๊ฒŒ ์™„์ „ํžˆ ๋ถˆํ•„์š”ํ•œ ํ˜ผ๋ž€์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. Flutter ๊ฐœ๋ฐœ์ž๋ฅผ ๋Œ์–ด๋“ค์ด๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด๋ผ๋ฉด Flutter๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ•˜๊ฒŒ ํ•ด์ฃผ์„ธ์š”. XAML์˜ ์•„๋ฆ„๋‹ค์›€์„ ํŒŒ๊ดดํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

C# ๋ฐ .NET ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@sim756

MAUI๋Š” UI๋ฅผ ๋””์ž์ธํ•˜๋Š” ํ•œ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•, ์ฆ‰ XAML๋งŒ ๊ณ ์ˆ˜ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‹จ ํ•œ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•๋งŒ ์žˆ์—ˆ๋˜ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ ๊ธฐ๋ฐ˜ UI๋Š” ์ฒ˜์Œ๋ถ€ํ„ฐ Xamarin.Forms๋ฅผ ํ†ตํ•ด ์ง€์›๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ ‘๊ทผํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ MVU๋Š” XAML( Xamarin.Forms , WPF )์—์„œ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@Happypig375

Flutter์—๋Š” Xamarin.Forms์—์„œ ์‚ฌ๋žŒ๋“ค์„ ๋Œ์–ด๋“ค์ด๋Š” ๋ฐ ์ „๋…ํ•˜๋Š” ์ „์ฒด ํŽ˜์ด์ง€ ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ์šฐ๋ฆฌ๊ฐ€ ๊ฒฝ์Ÿ์„ ๋ฌด์‹œํ•ด์•ผ ํ•œ๋‹ค๊ณ  ๋งํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ง„์งœ?

๊ธ€์Ž„, ์šฐ๋ฆฌ๋Š” " Flutter ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ Xamarin " ํŽ˜์ด์ง€

@rohanbojja

๋ธ”๋ ˆ์ด์ € ๋ฐ”์ธ๋”ฉ์ด ์˜ˆ๋ป์š”! ์ €๋Š” ์ด์ œ ๋ง‰ ์‹œ์ž‘ํ–ˆ์œผ๋ฉฐ Flutter๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๋‹จ์ˆœ์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ๋งŒ ๋นผ๊ณ ๋Š” ๋‹ค ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  _ ์ด๊ฒƒ์ด Flutter๋ฅผ ์‹ซ์–ดํ•˜๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค.
image
์ด๋ฏธ์ง€ 0

@forki

@davidortinau ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ์—์„œ ๋งํ–ˆ๋“ฏ์ด. MAUI ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์€ ์—„์ฒญ๋‚œ ํ˜ผ๋ž€์„ ์•ผ๊ธฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์€ ์ด์ œ MVU = ์ฝ”๋“œ/DSL๋กœ ๋ณด๊ธฐ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ MVU๊ฐ€ ๋ฌด์—‡์ธ์ง€์™€ ์™„์ „ํžˆ ๋…๋ฆฝ์ ์ž…๋‹ˆ๋‹ค. MVU๋Š” XAML๋กœ ์™„๋ฒฝํ•˜๊ฒŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋ทฐ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค.
๋ชจ๋ธ๊ณผ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์•„ ์ƒˆ ๋ชจ๋ธ์„ ๋นŒ๋“œํ•˜๋Š” ๋ถˆ๋ณ€ ๋ชจ๋ธ + ์—…๋ฐ์ดํŠธ ๊ธฐ๋Šฅ๊ณผ ๋ชจ๋ธ์„ ์ง์ ‘ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ์—…๋ฐ์ดํŠธ ๋ฃจํ”„์— ์ƒˆ ๋ช…๋ น(๋ฉ”์‹œ์ง€)์„ ๋ณด๋‚ด๋Š” ๋ทฐ ๊ธฐ๋Šฅ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์— ๊ด€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ •๋ง ํ˜ผ๋ž€์Šค๋Ÿฌ์›Œ์š”!! ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๊ฒŒ์‹œ๋ฌผ์ด ์น˜๋ช…์ ์œผ๋กœ ํ˜ผ๋ž€์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค.
image
์ด๋ฏธ์ง€ 1

@saint4eva

MAUI๋Š” UI๋ฅผ ๋””์ž์ธํ•˜๋Š” ํ•œ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•, ์ฆ‰ XAML ๋งŒ ๊ณ ์ˆ˜ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
Blazor Syntex ๋Š” ๊ดœ์ฐฎ์ง€๋งŒ MVU๋Š” ๋‚˜์—๊ฒŒ ์™„์ „ํžˆ ๋ถˆํ•„์š”ํ•œ ํ˜ผ๋ž€์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. Flutter ๊ฐœ๋ฐœ์ž๋ฅผ ๋Œ์–ด๋“ค์ด๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด๋ผ๋ฉด Flutter๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ•˜๊ฒŒ ํ•ด์ฃผ์„ธ์š”. XAML์˜ ์•„๋ฆ„๋‹ค์›€์„ ํŒŒ๊ดดํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

C# ๋ฐ .NET ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

" C# ๋ฐ .NET ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ", ์ •ํ™•ํžˆ๋Š” Flutter์˜ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@aspnetde

@sim756

MAUI๋Š” UI๋ฅผ ๋””์ž์ธํ•˜๋Š” ํ•œ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•, ์ฆ‰ XAML๋งŒ ๊ณ ์ˆ˜ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‹จ ํ•œ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•๋งŒ ์žˆ์—ˆ๋˜ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ ๊ธฐ๋ฐ˜ UI๋Š” ์ฒ˜์Œ๋ถ€ํ„ฐ Xamarin.Forms๋ฅผ ํ†ตํ•ด ์ง€์›๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ ‘๊ทผํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ MVU๋Š” XAML( Xamarin.Forms , WPF )์—์„œ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•Œ์•„์š”. ๋•Œ๋•Œ๋กœ ์šฐ๋ฆฌ๋Š” new Button() { .... } ์“ฐ์ง€๋งŒ ์ด ๊ฒŒ์‹œ๋ฌผ ( ์ด๋ฏธ์ง€ 1 )์€ ์ €์™€ ๋‹ค๋ฅธ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์„ ํ˜ผ๋ž€์Šค๋Ÿฝ๊ฒŒ ํ–ˆ์Šต๋‹ˆ๋‹ค.

@Happypig375

Flutter์—๋Š” Xamarin.Forms์—์„œ ์‚ฌ๋žŒ๋“ค์„ ๋Œ์–ด๋“ค์ด๋Š” ๋ฐ ์ „๋…ํ•˜๋Š” ์ „์ฒด ํŽ˜์ด์ง€ ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ์šฐ๋ฆฌ๊ฐ€ ๊ฒฝ์Ÿ์„ ๋ฌด์‹œํ•ด์•ผ ํ•œ๋‹ค๊ณ  ๋งํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ง„์งœ?

๊ธ€์Ž„, ์šฐ๋ฆฌ๋Š” " Flutter ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ Xamarin " ํŽ˜์ด์ง€

ใ…‹ ใ…‹ ใ…‹. "WPF ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ Windows Forms" ์ „์šฉ ํŽ˜์ด์ง€๋ฅผ ์ƒ์ƒํ•ด ๋ณด์‹ญ์‹œ์˜ค.

XAML์€ ๊ฐœ์ฒด ๋ชจ๋ธ ์œ„์— ์žˆ๋Š” "๋„๊ตฌ"์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. xaml, C#์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. MVVM(XAML ํฌํ•จ ๋˜๋Š” ๋ฏธํฌํ•จ) ๋˜๋Š” MVU(๊ณตํ‰ํ•˜๊ฒŒ ์ œ๊ณต๋˜๋Š” ์˜ˆ์ œ๋Š” "์‹ค์ œ" MVU๊ฐ€ ์•„๋‹ˆ์ง€๋งŒ ์ด๊ฒƒ์€ ๋˜ ๋‹ค๋ฅธ ์ฃผ์ œ์ž„)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•ฑ์„ ์„ค๊ณ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝ”๋”ฉ๋œ UI๋‚˜ MVU ์ ‘๊ทผ ๋ฐฉ์‹์ด ๋งˆ์Œ์— ๋“ค์ง€ ์•Š์œผ๋ฉด ๊ทธ๋ƒฅ ๋ฌด์‹œํ•˜์„ธ์š”. :) ๋‹ค์‹œ ๋ฐ€์–ด๋„ฃ์„ ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์ด ๋‹จ์ง€ ํ”Œ๋Ÿฌํ„ฐ ๊ฐœ๋ฐœ์ž๋ฅผ ์œ ์น˜ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. MVU ํŒจํ„ด์€ ์ฆ๊ฐ€ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ๋ชจ๋ฐ”์ผ ๊ฐœ๋ฐœ์— ๋งค์šฐ โ€‹โ€‹์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ์ฝ”๋”ฉ๋œ UI๊ฐ€ ์ฆ๊ฐ€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค... react, flutter, swiftUI, ecc... ๊ทธ๋“ค์€ ๋งŽ์€ ์ธ๊ธฐ๋ฅผ ์–ป๊ณ  ์žˆ์œผ๋ฉฐ ๊ณผ๋Œ€ ๊ด‘๊ณ ์ผ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ... ์ฝ”๋”ฉ๋œ UI๋Š” ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ˆ˜ํ–‰๋˜๋ฉด ํฐ ํ˜œํƒ์„ ๋ฐ›์Šต๋‹ˆ๋‹ค.

@GiampaoloGabba
๋‚˜๋Š” ๋‚ด๊ฐ€ Coded-UI๋ณด๋‹ค MVU์— ๋œ ๋ฐ˜๋Œ€ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋ถ„๋ช…ํžˆ ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” Coded-UI๊ฐ€ UI๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š” ๊ธฐ๋ณธ ๋ฐฉ๋ฒ•์ด ๋ ๊นŒ๋ด ๋‘๋ ต๋‹ค๋Š” ๊ทธ ๊ฒŒ์‹œ๋ฌผ์— ํ˜ผ๋ž€์Šค๋Ÿฌ์›Œํ•ฉ๋‹ˆ๋‹ค(....XAML์„ ์žƒ์„๊นŒ ๋‘๋ ต์Šต๋‹ˆ๋‹ค).

๊ธ€์Ž„, ์šฐ๋ฆฌ๋Š” .designer.cs ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์ง€๋งŒ ๊ฑฐ๊ธฐ์—์„œ ์ฝ”๋“œ๋ฅผ ํŽธ์ง‘ํ•  ํ•„์š”๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ์‹ฌ์ง€์–ด ๋งŽ์€ Windows Forms ๊ฐœ๋ฐœ์ž๋“ค์ด .designer.cs ํŒŒ์ผ์˜ ๋‚ด์šฉ์กฐ์ฐจ ๋ณธ ์ ์ด ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์—ฌ๊ธฐ์—๋Š” _.designer.cs_ ํŒŒ์ผ์˜ Coded-UI ์ฝ”๋“œ์— ๋Œ€ํ•ด ๊ฑฑ์ •ํ•  ํ•„์š”๊ฐ€ ์—†๋Š” _capable_ GUI ํŽธ์ง‘๊ธฐ ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ์˜ ์ œ๋ชฉ์„ ํŽธ์ง‘ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ๋งํ•˜๊ณ  ์‹ถ์—ˆ๋˜ ๊ฒƒ:

Blend for Visual Studio ์™€ ๊ฐ™์€ GUI ํŽธ์ง‘๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Flutter/Swift/Coded-UI ์™€ WPF/XAML ์ค‘์—์„œ ๋ฌด์—‡์„ ์„ ํƒํ• ๊นŒ์š”?

@sim756

์•Œ์•„์š”. ๋•Œ๋•Œ๋กœ ์šฐ๋ฆฌ๋Š” new Button() { .... }

๋•Œ๋•Œ๋กœ ์‚ฌ๋žŒ๋“ค์€ XAML์„ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š๊ณ  ์ „์ฒด XF ์•ฑ์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๋“ค์€ ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ๋งŒ์กฑํ•ฉ๋‹ˆ๋‹ค ;-).

@sim756

์•Œ์•„์š”. ๋•Œ๋•Œ๋กœ ์šฐ๋ฆฌ๋Š” new Button() { .... }

๋•Œ๋•Œ๋กœ ์‚ฌ๋žŒ๋“ค์€ XAML์„ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š๊ณ  ์ „์ฒด XF ์•ฑ์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๋“ค์€ ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ๋งŒ์กฑํ•ฉ๋‹ˆ๋‹ค ;-).

@aspnetde

๋†€๋ž์–ด์š”..!! ๐Ÿ˜ข

๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋“ค์—๊ฒŒ๋Š” ๊ทธ๋ ‡์ง€ ์•Š์ง€๋งŒ Xamarin/MAUI์šฉ Blend ๋ฅผ ์›ํ•˜๋Š” ๋‚˜์™€ ๊ฐ™์€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ๋Š” ๋ถˆํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์•ˆ๋“œ๋กœ์ด๋“œ ์ŠคํŠœ๋””์˜ค ๋ชจ์…˜ ์—๋””ํ„ฐ

https://developer.android.com/studio/write/motion-editor

image

@sim756 ํ•ซ ๋ฆฌ๋กœ๋“œ๊ฐ€ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๋Š” ์‹œ์Šคํ…œ์—์„œ ์ž‘์—…ํ•œ ํ›„์—๋„ ์—ฌ์ „ํžˆ ๋ธ”๋ Œ๋“œ ์ง€์›์„ ์›ํ•˜๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ๋žŒ๋“ค์€ ๊ทธ๊ฒƒ์„ ๋งŽ์ด ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค.

XAML/Blend ๋ฐฐ๊ฒฝ์—์„œ ๋น„๋กฏ๋œ ์ฝ”๋“œ์˜ UI์— ๋Œ€ํ•œ ์ดˆ๊ธฐ ์ƒ๊ฐ์€ ๋ฐ˜๋™์ด์—ˆ์ง€๋งŒ ์ผ๋‹จ ์‹œ๋„ํ•˜๊ณ  ๋ณด๋‹ˆ ๋‹จ์ˆœํžˆ ๊ณ ๋ คํ•˜์ง€ ์•Š์€ ๋งŽ์€ ์ด์ ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ ์—„์ฒญ๋‚˜๊ฒŒ ๋ณต์žกํ•ด ๋ณด์ด์ง€๋งŒ ๋‹น์‹œ์—๋Š” ์™„์ „ํžˆ ํ•ฉ๋ฆฌ์ ์œผ๋กœ ๋Š๊ปด์กŒ๋˜ ๊ฒƒ์˜ ํ•„์š”์„ฑ์„ ์ œ๊ฑฐํ•˜๋ฉด์„œ ๋ณ€ํ™˜๊ธฐ, ๋ฆฌ์†Œ์Šค ๋“ฑ๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ์œผ๋กœ ์ธํ•ด ์ฝ”๋“œ ์šฐ์„  UI๋ฅผ ์ง„์ •์œผ๋กœ ๋ฏฟ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๊ธ€์Ž„, ์šฐ๋ฆฌ๋Š” .designer.cs๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์ง€๋งŒ ๊ฑฐ๊ธฐ์—์„œ ์ฝ”๋“œ๋ฅผ ํŽธ์ง‘ํ•  ํ•„์š”๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ์‹ฌ์ง€์–ด ๋งŽ์€ Windows Forms ๊ฐœ๋ฐœ์ž๋“ค์ด .designer.cs ํŒŒ์ผ์˜ ๋‚ด์šฉ์กฐ์ฐจ ๋ณธ ์ ์ด ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@sim756 - ์œ ๋Šฅํ•œ ๋””์ž์ด๋„ˆ๊ฐ€ ํ›Œ๋ฅญํ•œ ์ƒ์‚ฐ์„ฑ ๋„๊ตฌ์ฒ˜๋Ÿผ ๋“ค๋ฆฌ์ง€๋งŒ ์ž ์‹œ ๋™์•ˆ ์ฃผ๋ณ€์— ์žˆ์—ˆ๋‹ค๋ฉด ๋””์ž์ด๋„ˆ๊ฐ€ ์†์ƒ๋˜์–ด ๋ช‡ ๊ฐ€์ง€ Visual Studio ๋ฒ„์ „์—์„œ ์ž‘๋™์„ ๋ฉˆ์ถ˜ "๋ ˆ๊ฑฐ์‹œ" ์ฝ”๋“œ๋ฒ ์ด์Šค์—์„œ ์ž‘์—…ํ–ˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  .designer.cs์˜ ์ˆ˜์ฒœ ์ค„์„ ์†์œผ๋กœ ์ดํ•ดํ•˜๊ณ  ํŽธ์ง‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ฝ”๋“œ๋ฒ ์ด์Šค์—์„œ ๋ฒ„ํŠผ ์ •๋ ฌ๊ณผ ๊ฐ™์€ ์•„์ฃผ ์ž‘์€ ๋ณ€๊ฒฝ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ์—๋„ ํ•˜๋ฃจ๋‚˜ ์ดํ‹€์ด ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ด๋Ÿฌํ•œ ๋ชจ๋“  ์ƒ์‚ฐ์„ฑ ์ด์ ์€ ๋‹ค์‹œ ๊ณ ๋ ค๋ฉ๋‹ˆ๋‹ค. (์ด์ „์— WinForms์™€ WebForms ๋ชจ๋‘์— ๋Œ€ํ•œ ๊ฒฝํ—˜์ด ์žˆ์Šต๋‹ˆ๋‹ค).

XAML๊ณผ ๊ด€๋ จํ•˜์—ฌ @dsym ์€ "XAML ๋ฌธ์ œ" ์ „์šฉ ์„น์…˜๊ณผ ํ•จ๊ป˜ Fabulous ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐ ํ•ฉ๋‹ˆ๋‹ค. Fabulous๋Š” ์ž์ฒด์ ์œผ๋กœ ๋งŽ์€ ๋ฌธ์ œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์ง€๋งŒ ์—ฌ์ „ํžˆ ์ œ๊ธฐ๋˜๋Š” ๋งŽ์€ ์š”์ ์— ๋™์˜ํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰

๊ด€๋ จ ๋ฌธ์ œ

PureWeen picture PureWeen  ยท  9์ฝ”๋ฉ˜ํŠธ

jsuarezruiz picture jsuarezruiz  ยท  6์ฝ”๋ฉ˜ํŠธ

handicraftsman picture handicraftsman  ยท  4์ฝ”๋ฉ˜ํŠธ

Yaroslav08 picture Yaroslav08  ยท  6์ฝ”๋ฉ˜ํŠธ

Amine-Smahi picture Amine-Smahi  ยท  3์ฝ”๋ฉ˜ํŠธ