Microsoft-ui-xaml: ์ œ์•ˆ: NumberBox ์ปจํŠธ๋กค

์— ๋งŒ๋“  2019๋…„ 03์›” 25์ผ  ยท  185์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: microsoft/microsoft-ui-xaml

WinUI ํŒ€์€ ์ด ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์‚ฌ์–‘ ๊ณผ PR ์„ ๊ณต๊ฐœํ–ˆ์Šต๋‹ˆ๋‹ค.

์ œ์•ˆ: NumberBox ์ปจํŠธ๋กค

์š”์•ฝ

NumberBox ์ปจํŠธ๋กค์€ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์ˆซ์ž(์ •์ˆ˜, ๋ถ€๋™ ์†Œ์ˆ˜์  ๋˜๋Š” ํ†ตํ™”) ๊ฐ’์„ ์ˆ˜์‹ ํ•˜๊ธฐ ์œ„ํ•œ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ ์ปจํŠธ๋กค์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ํ‚ค๋ณด๋“œ InputScope๋Š” Number๋กœ ์„ค์ •๋˜๋ฉฐ Up/Down ๋ฒ„ํŠผ, ์„œ์‹ ์ง€์ • ๋ฐ ๊ธฐ๋ณธ ๊ณ„์‚ฐ๊ณผ ๊ฐ™์€ ์ถ”๊ฐ€ ์ง€์›์ด ์„ ํƒ์ ์œผ๋กœ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

์ด๋ก ์  ํ•ด์„

  • UWP์—๋Š” ํ…์ŠคํŠธ, ๋‚ ์งœ ๋ฐ ์‹œ๊ฐ„ ๊ฐ’์— ๋Œ€ํ•œ ์ปจํŠธ๋กค์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ˆซ์ž ๊ฐ’์ด ์•„๋‹Œ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์ˆซ์ž๋Š” ๋งค์šฐ ์ผ๋ฐ˜์ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ์ž์ฒด ์ž…๋ ฅ ์ œ์–ด๋ฅผ ๋ฐ›์„ ์ž๊ฒฉ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์ž…๋ ฅ ๋Œ€ํ™” ์ƒ์ž๋ฅผ ๋งŒ๋“œ๋Š” ๋ชจ๋“  ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์•ฑ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

  • ๊ณ„์‚ฐ๊ธฐ์˜ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ ์œ ์‚ฌํ•œ ์ œ์•ˆ์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. https://github.com/microsoft/calculator/issues/453

๋ฒ”์œ„

| ๊ธฐ๋Šฅ | ์šฐ์„ ์ˆœ์œ„ |
|:--|:-:|
| ์ž…๋ ฅ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ(์ตœ์†Œ/์ตœ๋Œ€ ํฌํ•จ). | ํ•„์ˆ˜ |
| ํ™œ์„ฑํ™” ๊ฐ€๋Šฅํ•œ ๋žฉ์–ด๋ผ์šด๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž ์ •์˜ ๋‹จ๊ณ„ ํฌ๊ธฐ์— ๋”ฐ๋ผ ๊ฐ’์„ ์ฆ๊ฐ€/๊ฐ์†Œ์‹œํ‚ค๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์ž…๋‹ˆ๋‹ค. | ํ•„์ˆ˜ |
| ํ†ตํ™”, ์ ‘๋‘์‚ฌ/์ ‘๋ฏธ์‚ฌ ๋“ฑ์— ๋Œ€ํ•œ ์„œ์‹ ์ง€์› | ํ•„์ˆ˜ |
| ๊ณ„์‚ฐ๊ธฐ ์ง€์›. | ํ•„์ˆ˜|
| ์Šคํฌ๋กคํ•˜๊ณ  ๋“œ๋ž˜๊ทธํ•˜์—ฌ ์ž…๋ ฅ์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. | ๋ฏธ์ • |

์ค‘์š” ์ฐธ๊ณ  ์‚ฌํ•ญ

๊ณ„์‚ฐ๊ธฐ ์ง€์›
๊ณ„์‚ฐ๊ธฐ ์ง€์›์ด ์žˆ์œผ๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. NumberBox์— '5 + 2'๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์ดˆ์ ์„ ์žƒ์—ˆ์„ ๋•Œ 7์„ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.
image
์ด๊ฒƒ์„ ๋™์ž‘์œผ๋กœ ๊ตฌํ˜„ํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ์ง€๋งŒ NumberBox ์ปจํŠธ๋กค์ด ๋” ์ ํ•ฉํ•˜๊ณ  ๊ฒ€์ƒ‰ํ•˜๊ธฐ ๋” ์‰ฝ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. https://github.com/sonnemaf/XamlCalculatorBehavior

์ž…๋ ฅ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ
์ปจํŠธ๋กค์ด ๋ชจ๋“  ์ž…๋ ฅ์˜ ์œ ํšจ์„ฑ์„ ๊ฒ€์‚ฌํ•˜๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. (์˜ˆ๋ฅผ ๋“ค์–ด) ์†Œ์ˆ˜์  ๊ตฌ๋ถ„ ๊ธฐํ˜ธ๋ฅผ ๋‘ ๋ฒˆ ์ž…๋ ฅํ•˜๋Š” ๊ฒƒ์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. CanBeNegative(bool) ๋ฐ DecimalsPlaces(int) ์†์„ฑ๋„ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์„ ๋™์ž‘์œผ๋กœ ๊ตฌํ˜„ํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ์ง€๋งŒ NumberBox ์ปจํŠธ๋กค์ด ๋” ์ ํ•ฉํ•˜๊ณ  ๊ฒ€์ƒ‰ํ•˜๊ธฐ ๋” ์‰ฝ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. https://github.com/sonnemaf/NumberBoxBehavior

์œ„/์•„๋ž˜ ๋ฒ„ํŠผ
met์ด NumberBox ์˜†์— '+' ๋ฐ '-' ๋ฒ„ํŠผ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ”Œ๋ž˜๊ทธ๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ตœ์†Œ ๋ฐ ์ตœ๋Œ€ ์†์„ฑ์ด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
image

ํ†ตํ™” ์ง€์›
ํ†ตํ™” ์ž…๋ ฅ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
image

์ ‘๊ทผ์„ฑ ๋ฐ ์ž…๋ ฅ

  • ๋‚ด๋ ˆ์ดํ„ฐ ์‚ฌ์šฉ์ž์˜ ๊ฒฝ์šฐ "๋”ํ•˜๊ธฐ" ๋ฐ "๋นผ๊ธฐ"๊ฐ€ ์•„๋‹ˆ๋ผ ์œ„๋กœ/์•„๋ž˜๋กœ ๋ฒ„ํŠผ + ์ฆ๋ถ„์„ ๋ช…์‹œํ•˜๊ณ  ๋ช…ํ™•ํ•˜๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  • Xbox ์ปจํŠธ๋กค๋Ÿฌ์— ์•„๋‚ ๋กœ๊ทธ ์Šคํ‹ฑ๊ณผ D-Pad๊ฐ€ ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ•˜๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด ํฌ์ปค์Šค ํŠธ๋ž˜ํ•‘์ด ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ?

์—ด๋ฆฐ ์งˆ๋ฌธ

  • 16์ง„์ˆ˜ ๋˜๋Š” 2์ง„์ˆ˜์— ๋Œ€ํ•œ ์ง€์›์ด ํ•„์š”ํ•œ ๊ฒƒ์„ ์ •๋‹นํ™”ํ•˜๋Š” ์‹ค์ œ ์•ฑ ์‹œ๋‚˜๋ฆฌ์˜ค๊ฐ€ ์žˆ๋Š” ์‚ฌ๋žŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

  • ๊ณ„์‚ฐ ๊ฒฐ๊ณผ์— ๋Œ€ํ•œ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? @mdtauk ๋Š” ๋ช‡ ๊ฐ€์ง€ ์˜ˆ์‹œ ์‹œ๊ฐํ™”๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

NumberBox with a tool tip above to show a preview of the calculation results

NumberBox with a calculation in progress and highlight text previewing the calculation results

area-TextBox feature proposal team-Controls

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

NumberBox๋กœ ๋Œ์•„๊ฐ€๊ธฐ

์ข‹์•„ ํŒ€,

์˜ˆ์ƒ์น˜ ๋ชปํ•œ ํœด์‹์— ๋Œ€ํ•ด ์‚ฌ๊ณผ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ €๋Š” NumberBox ํ’€ ์Šค๋กœํ‹€๋กœ ๋Œ์•„ ๊ฐ”๊ณ  @teaP ๊ฐ€ ์ €์™€ ํ•จ๊ป˜ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ์ž๋กœ ํ•ฉ๋ฅ˜ํ–ˆ์Šต๋‹ˆ๋‹ค! ์šฐ๋ฆฌ๋Š” ์ด ์ปจํŠธ๋กค์˜ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ๋ฅผ ์œ„ํ•ด ์—ฌ์ „ํžˆ 11์›” ๋ง์„ ๋ชฉํ‘œ๋กœ ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ WinUI 2.4๊ฐ€ ํฌํ•จ๋œ ์•ˆ์ •์ ์ธ ๋ฆด๋ฆฌ์Šค๋ฅผ ๋ณด๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด์ „ ์›Œํฌํ”Œ๋กœ์—๋Š” ๋งŽ์€ ์ง์ด ์žˆ์œผ๋ฏ€๋กœ ๋ฏธํ•ด๊ฒฐ ์งˆ๋ฌธ์ด๋‚˜ ๋‹ต๋ณ€๋œ ์งˆ๋ฌธ์„ ๋ณด์กดํ•˜๊ณ  @teaP ์™€ ๋‚ด๊ฐ€ ๋‹ค์Œ์— ๊ด€ํ•œ ๋‚˜๋จธ์ง€ ๋ฏธํ•ด๊ฒฐ ์ฃผ์ œ ํ•ด๊ฒฐ์„ ๋งˆ์น˜๋Š” ์ƒˆ๋กœ์šด ์‚ฌ์–‘ PR๋กœ ํฌํŒ…ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  • ํ˜„์ง€ํ™”
  • ๋””์ž์ธ(ํŠนํžˆ ์œ„/์•„๋ž˜ ๋ฒ„ํŠผ๊ณผ ๊ด€๋ จํ•˜์—ฌ)
  • ํ•˜์ดํผ์Šคํฌ๋กค/ํ•˜์ดํผ๋“œ๋ž˜๊ทธ

์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ํ•ญ๋ชฉ์ด ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. @LucasHaines ' ์ž…๋ ฅ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ์ž‘์—…์ด WinUI 3.0 ๋ฐ ๊ทธ ์ „์— NumberBox ๊ณ„ํš ๋ฆด๋ฆฌ์Šค์— ๋Œ€ํ•ด ์˜ˆ์ •๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ NumberBox V1์—์„œ ์ง€์›๋˜๋Š” ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๋ชจ๋“œ๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ค„์˜€์Šต๋‹ˆ๋‹ค.

์—ด๊ฑฐํ˜• NumberBoxBasicValidationMode
{
์žฅ์• ๊ฐ€์žˆ๋Š”,
InvalidInput๋ฎ์–ด์“ฐ๊ธฐ,
};

WinUI 3.0 ๋ฐ ํ•„์ˆ˜ ์ž…๋ ฅ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ์ž‘์—…์ด ์‹œ์ž‘๋˜๋ฉด NumberBox V2์—์„œ ์›๋ž˜ ๊ณ„ํš๋œ IconMessage ๋ฐ TextBlockMessage ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๋ชจ๋“œ๋กœ ํ•ด๋‹น ์—ด๊ฑฐํ˜•์„ ํ™•์žฅํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์ด์ œ ์ด์ „ ์ง„ํ–‰ ์ƒํ™ฉ์„ ๋ชจ๋‘ ์ •๋ฆฌํ•˜๊ณ  ๊ด€๋ จ ์งˆ๋ฌธ์„ ๊ฒŒ์‹œํ•˜๊ณ  ํ”ผ๋“œ๋ฐฑ์„ ์š”์ฒญํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•จ๊ป˜ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๐Ÿ˜„

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

์‹œ์ž‘์ ์œผ๋กœ Telerik์—๋Š” https://www.telerik.com/universal-windows-platform-ui/numericbox๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜คํ”ˆ ์†Œ์Šค์—์„œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: https://github.com/telerik/UI-For-UWP/blob/master/Controls/Input/Input.UWP/NumericBox/RadNumericBox.cs.

๋‚ด๊ฐ€ ๊ทธ๋“ค์—๊ฒŒ์„œ ์ข‹์•„ํ•˜๋Š” ๊ฒƒ์€ ValueFormat ์†์„ฑ์„ ์‚ฌ์šฉํ•œ ํ˜•์‹ํ™”์— ๋Œ€ํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

์˜ˆ: ValueFormat="{}{0,0:C2}"

๋˜ํ•œ ์ด๊ฒƒ์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ํ˜„์ง€ํ™”๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. Windows Community Toolkit ๊ตฌํ˜„์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ช‡ ๊ฐ€์ง€ ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

ValidationType="Decimal"์ธ TextBoxRegex ํ™•์žฅ์€ ๋ชจ๋“  UI ๋ฌธํ™”๊ถŒ์„ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  InvariantCulture๋กœ ๊ณ ์ •๋ฉ๋‹ˆ๋‹ค. ์˜์–ด์—์„œ ์‹ญ์ง„์ˆ˜ ๊ฐ’์€ ๋งˆ์นจํ‘œ๊ฐ€ ์žˆ๋Š” "10.1234"์ž…๋‹ˆ๋‹ค. ์ŠคํŽ˜์ธ์–ด ๋˜๋Š” ๋…์ผ์–ด ์‹ญ์ง„์ˆ˜ ๊ฐ’์€ "10,1234"๋กœ ํ‘œ๊ธฐ๋ฉ๋‹ˆ๋‹ค. ์˜์–ด ๊ตฌ๋ฌธ ๋ถ„์„์ด ์ •ํ™•ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ŠคํŽ˜์ธ์–ด ๋˜๋Š” ๋…์ผ์–ด ์‚ฌ์šฉ์ž ์ž…๋ ฅ์€ ๋ถ„์ˆ˜ ๋ถ€๋ถ„์ด ์†์‹ค๋œ "101234"์ž…๋‹ˆ๋‹ค.

์ฐธ์กฐ: https://github.com/windows-toolkit/WindowsCommunityToolkit/issues/2700

์œ„์ชฝ ๋ฐ ์•„๋ž˜์ชฝ ํ™”์‚ดํ‘œ๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ’๋งŒํผ ๊ฐ’์„ ์ฆ๊ฐ€ ๋˜๋Š” ๊ฐ์†Œ์‹œ์ผœ์•ผ ํ•˜์ง€๋งŒ ๊ธฐ๋ณธ๊ฐ’์€ int 1์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ์˜ˆ๋ฅผ ๋“ค์–ด ๊ฐ๋„๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒฝ์šฐ ๋žฉ ์–ด๋ผ์šด๋“œ ์ตœ์†Œ/์ตœ๋Œ€ ๊ฐ’์ด ์ข‹์Šต๋‹ˆ๋‹ค.
  • ์ ‘๋ฏธ์‚ฌ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ
  • ํ…์ŠคํŠธ ์ƒ์ž๋ฅผ ํด๋ฆญํ•˜๊ณ  ์œ„/์•„๋ž˜๋กœ ๋“œ๋ž˜๊ทธํ•˜์—ฌ ๊ฐ’์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. Adobe XD๋Š” ์ˆซ์ž ์ž…๋ ฅ์— ์ด๊ฒƒ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

WinRT XAML Toolkit์˜ ๊ตฌํ˜„๋„ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•ด ์œ„/์•„๋ž˜๋กœ ๋“œ๋ž˜๊ทธ๋ฅผ ์ง€์›ํ•˜๋ฉฐ ํŠน์ • ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋งˆ์šฐ์Šค๋กœ ์‚ฌ์šฉํ•  ๋•Œ ํ›จ์”ฌ ๋” ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
https://github.com/xyzzer/WinRTXamlToolkit/tree/master/WinRTXamlToolkit/Controls/NumericUpDown

์•ˆ๋…•ํ•˜์„ธ์š”, @sonnemaf , @ArchieCoder , @robloo , @mdtauk , @adrientetar , ๊ทธ๋ฆฌ๊ณ  @xyzzer์ž…๋‹ˆ๋‹ค! ์ €๋Š” ์ด ์ œ์•ˆ์— ๋ฐฐ์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋จผ์ € ์ œ์ถœํ•ด ์ฃผ์‹  @sonnemaf ๋‹˜๊ป˜ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ง€๋‚œ์ฃผ ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ ๋นŒ๋“œ 2019์—์„œ ์„ ๋ณด์˜€๋Š”๋ฐ ๊ด€๊ฐ๋“ค์˜ ํ™˜ํ˜ธ๋ฅผ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค! ๋Œ“๊ธ€์˜ ์ปค๋ฎค๋‹ˆํ‹ฐ ๋ฐ˜์‘์€ ๋˜ํ•œ NumberBox๊ฐ€ ์ผ์–ด๋‚˜๋Š” ๊ฒƒ์„ ๋ณด๊ณ  ์‹ถ์–ดํ•˜๋Š” ํฅ๋ถ„์„ ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ์˜ ์˜๊ฒฌ์„ ์ฝ๊ณ  ๋ฐ›์€ ์ž…๋ ฅ์„ ๋ฐ˜์˜ํ•˜๋„๋ก ๋ฒ”์œ„ ์„น์…˜์„ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์‚ฌ๋žŒ ์ด ์ด ์ž‘์€ ์—…๋ฐ์ดํŠธ๋ฅผ ํ™•์ธํ•˜๊ณ  ๋‚ด๊ฐ€ ์š”์ฒญ์„ ์ •ํ™•ํ•˜๊ฒŒ ์บก์ฒ˜ํ•˜์ง€ ๋ชปํ–ˆ๋‹ค๋ฉด ์•Œ๋ ค ์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ผ๋ถ€ ์„ธ๋ถ€์ •๋ณด(์˜ˆ: ํ˜„์ง€ํ™” ํ˜•์‹ ์ง€์ •)๋Š” ์‚ฌ์–‘ ์ˆ˜์ค€์—์„œ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” @SavoySchuler ๋‹˜ ,

์ด๋ฒˆ ์ฃผ์—๋Š” ์•ฑ์˜ ์ ‘๊ทผ์„ฑ ๊ธฐ๋Šฅ์„ ์ž‘์—… ์ค‘์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด "ํ”Œ๋Ÿฌ์Šค", "๋งˆ์ด๋„ˆ์Šค" ๋Œ€์‹  ์ฆ๋ถ„์„ ํฐ ์†Œ๋ฆฌ๋กœ ๋งํ•  ์ˆ˜ ์žˆ๋Š” ์ƒˆ ์ปจํŠธ๋กค๋กœ ์ ‘๊ทผ์„ฑ์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ฒ˜๋ฆฌ๋œ๋‹ค๋ฉด ์ด๊ฒƒ์€ ํ”Œ๋Ÿฌ์Šค๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚˜๋จธ์ง€๋Š” ๋‚˜์—๊ฒŒ ์ข‹์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋‚ด๋ ˆ์ดํ„ฐ๊ฐ€ ๊ฐ’์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ฝ์„ ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์—ฌ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ๋ช…ํ™•ํ•˜๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

Xbox ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์•„๋‚ ๋กœ๊ทธ ์Šคํ‹ฑ๊ณผ D-Pad๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘๋™ํ•˜๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด ์ดˆ์ ์„ ๋‘๋“œ๋ ค์•ผ ํ•˜๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ž‘์€ ์ˆ˜์ • - ํ™œ์„ฑํ™”๋  ๋•Œ๊นŒ์ง€ ํ…์ŠคํŠธ ํ•„๋“œ ์ž์ฒด์—์„œ ์ฆ๊ฐ€/๊ฐ์†Œ ๋“œ๋ž˜๊ทธ๊ฐ€ ์ž‘๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด ๊ตฌํ˜„์—์„œ IIRC๋ฅผ ํ™œ์„ฑํ™”ํ•˜๊ณ  ๋“œ๋ž˜๊ทธํ•˜๋Š” ๋™์•ˆ ๋งˆ์šฐ์Šค ์ปค์„œ๋ฅผ ์ˆจ๊ฒจ์„œ ์ปจํŠธ๋กค์ด๋‚˜ ํ™”๋ฉด์˜ ํ…Œ๋‘๋ฆฌ๊ฐ€ ๋“œ๋ž˜๊ทธ ๊ฑฐ๋ฆฌ๋ฅผ ์ œํ•œํ•˜์ง€ ์•Š๊ณ  ๋“œ๋ž˜๊ทธ๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ํ…์ŠคํŠธ ํ•„๋“œ ์œ„์— ํˆฌ๋ช… ์˜ค๋ฒ„๋ ˆ์ด๋ฅผ ๋„ฃ์–ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ปค์„œ๋ฅผ ๋‹ค์‹œ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์ปค์„œ๊ฐ€ ์ฒ˜์Œ ์‚ฌ๋ผ์ง„ ์œ„์น˜์— ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

@SavoySchuler ์ˆ˜๊ณ  ํ•˜์…จ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‹น์‹ ์˜ ๋ฒ”์œ„์™€ ํ•จ๊ป˜ ์‚ด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณ„์‚ฐ๊ธฐ๋Š” ์žˆ์œผ๋ฉด ์ข‹์Šต๋‹ˆ๋‹ค(WinUI 3.0 ๋˜๋Š” 3.1). ์ €๋Š” ๋งŽ์€ ๋ฐ์Šคํฌํƒ‘ ํ™˜๊ฒฝ(VB6, WinForms, WPF ๋ฐ UWP)์—์„œ ๊ฐœ๋ฐœํ–ˆ์œผ๋ฉฐ ํ•ญ์ƒ NumberBox๋ฅผ ๋†“์ณค์Šต๋‹ˆ๋‹ค. ๋งˆ์นจ๋‚ด ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ์–ป์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์œ„/์•„๋ž˜๋กœ ๋งˆ์šฐ์Šค ์Šคํฌ๋กค ํœ ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. Blend for Visual Studio๋Š” ์ด๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ Expression Blend์—์„œ ๋งŽ์ด ์‚ฌ์šฉํ–ˆ๋˜ Drag-to-change๋„ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค.

์–ด๋–ค ์ž…๋ ฅ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๊ฐ€ ์ˆ˜ํ–‰๋˜๊ณ  ์ˆ˜ํ–‰๋˜์ง€ ์•Š์„์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ตœ์†Œ/์ตœ๋Œ€ ๋˜๋Š” ์ œํ•œ ํ‚ค๋ณด๋“œ(๋ฌธ์ž az ๋“ฑ)๋งŒ ๋ฉ๋‹ˆ๊นŒ? ์ž˜๋ชป๋œ ์ˆซ์ž ๋ถ™์—ฌ๋„ฃ๊ธฐ๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๊นŒ?

์ „์ฒด ์‚ฌ์–‘์„ ์ฝ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

@ArchieCoder , ํฌ๊ณ 

@mdtauk , ์–ธ์ œ๋‚˜์ฒ˜๋Ÿผ ํ›Œ๋ฅญํ•œ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์„ ์กฐ์‚ฌํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”๋ชจ๋กœ ์ ‘๊ทผ์„ฑ ๋ฐ ์ž…๋ ฅ ์„น์…˜์— ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

@xyzzer๋‹˜ ๋ง์”€์ด ๋งž์Šต๋‹ˆ๋‹ค. ๋ฒ”์œ„ ๋ชฉ๋ก์„ ์žฌ๊ตฌ์„ฑํ•  ๋•Œ ๊ด€๋ จ ๊ธฐ๋Šฅ์œผ๋กœ Up/Down ๋ฒ„ํŠผ๊ณผ drag-to-change๋ฅผ ๊ทธ๋ฃนํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์‹œ ์ฝ์œผ๋ฉด ๋งˆ์น˜ ๋“œ๋ž˜๊ทธํ•˜์—ฌ ๋ณ€๊ฒฝ์ด ๋ฒ„ํŠผ์˜ ๊ธฐ๋Šฅ์ด๋ผ๊ณ  ์ œ์•ˆํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. ๋ช…ํ™•์„ฑ์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ๋“œ๋ž˜๊ทธ-ํˆฌ-์ฒด์ธ์ง€๋ฅผ ์ž์ฒด ์„น์…˜์œผ๋กœ ์˜ฎ๊ฒผ์Šต๋‹ˆ๋‹ค.

@sonnemaf , ๊ต‰์žฅํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์–‘์— ๋Œ€ํ•œ ๋งํฌ๋Š” ์˜ค๋Š˜์ด๋‚˜ ๋‹ค์Œ ์ฃผ์— ์—ด๋ฆฌ๋ฉด ๋ฐ”๋กœ ๊ฒŒ์‹œํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ €์™€ ํ•จ๊ป˜ ๊ธ€์„ ์“ฐ๋„๋ก ๊ฒฉ๋ คํ•ด์ฃผ์„ธ์š”! ๊ทธ๋•Œ๊นŒ์ง€๋Š” ์—ฌ๊ธฐ์—์„œ ๋ฒ”์œ„์— ์Šคํฌ๋กคํ•˜์—ฌ ๋ณ€๊ฒฝํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋‘ , ๊ณ„์‚ฐ๊ธฐ ์ง€์›์— ๋Œ€ํ•œ ๋ฉ”๋ชจ์™€ ํ•จ๊ป˜ - ๋‚˜๋Š” ๊ฐ€์น˜๋ฅผ ๋ฏฟ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ์šฐ๋ฆฌ ํŒ€๊ณผ ํ˜‘๋ ฅํ•˜์—ฌ ํ”Œ๋žซํผ์—์„œ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ ๋ชจ๋“ˆํ™”ํ•ด์•ผ ํ•˜๋Š” ํ•ญ๋ชฉ์ธ์ง€ ํŒŒ์•…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๊ณ„์‚ฐ๊ธฐ ์ง€์›์„ ์–ด๋””๊นŒ์ง€ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€์— ๋Œ€ํ•œ ์งˆ๋ฌธ์ด ์žˆ์Šต๋‹ˆ๋‹ค. +-/*์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ์ž‘์—… ์ˆœ์„œ๊ฐ€ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ์ผ์ข…์˜ Wolfram ์•ŒํŒŒ ์„œ๋น„์Šค์— ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ๋ณด๋‹ค ํฌ๊ด„์ ์ธ ๊ฒƒ์ž…๋‹ˆ๊นŒ? ๋ชจ๋“ˆ์‹ ๊ฒฝ๋กœ๋ฅผ ํƒ์ƒ‰ํ•˜๋ฉด ๋” ํฌ๊ด„์ ์ธ ํ˜•ํƒœ์˜ ๊ณ„์‚ฐ๊ธฐ ์ง€์› ๊ธฐํšŒ๋ฅผ ์ฐจ๋‹จํ•˜์ง€ ์•Š์œผ๋ฉด์„œ ๋” ๊ธฐ๋ณธ์ ์ธ ๊ฒฝ์šฐ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ ๋ชจ๋“  ์‚ฌ๋žŒ์˜ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์ž…๋ ฅ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ์˜ ๊ฒฝ์šฐ ๋™์ผํ•œ ์งˆ๋ฌธ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ตœ์†Œ, ์ตœ๋Œ€, ๋ฌธ์ž ์—†์Œ ๋ฐ ์ž˜๋ชป๋œ ๋ถ™์—ฌ๋„ฃ๊ธฐ๊ฐ€ ์ ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

๋‚˜๋Š” ๊ณ„์‚ฐ๊ธฐ ๊ธฐ๋Šฅ์ด ๊ท€์—ฝ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ์‹ค์ œ๋กœ ์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉ์ž๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ฐœ๊ฒฌํ•ฉ๋‹ˆ๊นŒ? ์ด์— ๋Œ€ํ•œ ์•ฝ๊ฐ„์˜ ์œ„์ ฏ ํžŒํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

@ArchieCoder ,

๊ฐœ๋ฐœ์ž์—๊ฒŒ ์˜์กดํ•˜๋„๋ก ์š”์ฒญํ•  ์ˆ˜ ์žˆ๋Š” ์•ฑ ์ˆ˜์ค€์˜ ์ง€์นจ์„ ์œ„ํ•œ ToolTip ๋˜๋Š” ๋” ๋ฌด๊ฑฐ์šด TeachingTip์ด ์žˆ์ง€๋งŒ ์ €๋Š” NumberBox ์ž์ฒด ๋‚ด์—์„œ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์—์„œ ๋‹น์‹ ์˜ ์ƒ๊ฐ์„ ๋“ฃ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค!

๊ณต๊ฐ„ ์ œํ•œ์œผ๋กœ ์ธํ•ด ๋‹ค๋ฅธ ์ปจํ…์ŠคํŠธ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์€ ํ•œ ์ž๋ฆฌ ํ‘œ์‹œ์ž๋Š” ์‹ค์ œ๋กœ ์ข‹์€ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด NumberBox ๋„ˆ๋น„๊ฐ€ ํ…์ŠคํŠธ ์ƒ์ž๋ณด๋‹ค ์ž‘์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ปจํŠธ๋กค์ด nullable ์ˆซ์ž๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ํ•œ - ํ•ญ์ƒ ๊ฐ’์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ ๊ทธ ์•ˆ์— ์ž๋ฆฌ ํ‘œ์‹œ์ž ๋ฌธ์ž์—ด์„ ์œ„ํ•œ ๊ณต๊ฐ„์ด ์—†์Šต๋‹ˆ๋‹ค.

2019๋…„ 5์›” 17์ผ ๊ธˆ์š”์ผ ์˜ค์ „ 10์‹œ 14๋ถ„ ArchieCoder [email protected]
์ผ๋‹ค:

๋‹ค๋ฅธ ์ปจํ…์ŠคํŠธ๊ฐ€ ์•„๋‹Œ ํ•œ ์ž๋ฆฌ ํ‘œ์‹œ์ž๋Š” ์‹ค์ œ๋กœ ์ข‹์€ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.
๊ณต๊ฐ„ ์ œ์•ฝ์œผ๋กœ ์ธํ•ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. NumberBox ๋„ˆ๋น„๊ฐ€
์˜ˆ๋ฅผ ๋“ค์–ด ํ…์ŠคํŠธ ์ƒ์ž๋ณด๋‹ค ์ž‘์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/microsoft/microsoft-ui-xaml/issues/483?email_source=notifications&email_token=AANMBMAL7LUOVPIM55PYO4LPV3RWPA5CNFSM4HA4PBNKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVX
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AANMBMBKHP7GP5WUHLPWNZLPV3RWPANCNFSM4HA4PBNA
.

@ArchieCoder , @sonnemaf ์˜ ์˜ˆ๋ฅผ ๋ณด๋ฉด(๋‹ค์‹œ ํ•œ ๋ฒˆ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค) "a + b - c"์— ๋Œ€ํ•œ ์ž๋ฆฌ ํ‘œ์‹œ์ž ํ…์ŠคํŠธ๋ฅผ ํ‘œ์‹œํ•  ๋งŒํผ ์ถฉ๋ถ„ํžˆ ๋„“์ง€ ์•Š์€ NumberBox๋„ ๊ถŒ์žฅ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์ƒ์„ฑํ•˜๊ธฐ์— ์ถฉ๋ถ„ํžˆ ๋„“์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์— ๋ฐฉ์ •์‹์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ์ ์—์„œ ์ด ์†”๋ฃจ์…˜ ์˜ต์…˜์ด ์ด ๋ชฉ์ ์— ์—ฌ์ „ํžˆ ์‹คํ–‰ ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ๋‹น์‹ ์ด ์šฐ๋ฆฌ๊ฐ€ ์•„์ง ๋‹ค๋ฃจ์ง€ ์•Š์€ ์˜์—ญ์„ ๋‘๋“œ๋ฆฌ๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์ปดํŒฉํŠธํ•œ NumberBox/๊ฐ„๋‹จํ•œ ์ˆซ์ž๋งŒ ์ž…๋ ฅํ•˜๊ธฐ๋ฅผ ์›ํ•˜๋Š” ์‹œ๋‚˜๋ฆฌ์˜ค์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ณ„์‚ฐ๊ธฐ ์ง€์›์ด ๊ทธ๊ฒƒ์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ธฐ ์œ„ํ•œ API๊ฐ€ ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ๊ธด ์ž๋ฆฌ ํ‘œ์‹œ์ž ํ…์ŠคํŠธ์— ๋Œ€ํ•ด ๊ฑฑ์ •ํ•˜๊ฑฐ๋‚˜ ์ตœ์†Œ ๊ณต๊ฐ„ ์ œ์•ฝ์„ ๊นจ๋Š” ๋ฐ ์‹ ๊ฒฝ ์“ธ ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. , "#" ๋˜๋Š” "์˜ˆ: 2"์™€ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

@xyzzer , ์ด ๋ฌธ์ œ๋ฅผ ์ œ๊ธฐํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์˜ฌ๋ฐ”๋ฅธ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์ธ์ง€ ๋จผ์ € ํ™•์ธํ•˜๊ณ  ๊ฑฐ๊ธฐ์—์„œ ๊ตฌํ˜„์„ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค! ์™„ํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ์ˆ ์  ์ œํ•œ์œผ๋กœ ์ธํ•ด _right_ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์— ๋Œ€ํ•œ ๊ฒ€์ƒ‰์„ ์ œํ•œํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. :ํŽธ์•ˆํ•จ:

๋ชจ๋‘์—๊ฒŒ ๋” ๋†’์€ ์šฐ์„ ์ˆœ์œ„ ์งˆ๋ฌธ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

ํ‘œ์ค€ TextBox์™€ ๋…๋ฆฝ์ ์œผ๋กœ ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์„ ํ†ตํ•ฉํ•˜๋Š” NumberBox ์ปจํŠธ๋กค์„ ์‚ฌ์šฉํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด API ๋˜๋Š” InputScope๋ฅผ ํ†ตํ•ด ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ณธ ๊ธฐ๋Šฅ์œผ๋กœ ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์„ TextBox์— ๊ตฝ๊ณ  ์‹ถ์œผ์‹ญ๋‹ˆ๊นŒ?

( @sonnemaf , @ArchieCoder , @robloo , @mdtauk , @adrientetar ๋ฐ @xyzzer )

์ด ๋ชจ๋“  ๊ฒƒ์„ TextBox ์ปจํŠธ๋กค์— ๋„ฃ๋Š” ๊ฒƒ์€ ์ค‘์š”ํ•œ ๋ณ€ํ™”์ž…๋‹ˆ๋‹ค.

์ž…๋ ฅํ•œ ๋ฌธ์ž์— ๋Œ€ํ•œ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ์ž…๋‹ˆ๋‹ค.

InputScope์™€ ํ•จ๊ป˜ ์˜ฌ๋ฐ”๋ฅธ ํ‚ค๋ณด๋“œ ๋ ˆ์ด์•„์›ƒ ์‚ฌ์šฉ

๋‹ค์–‘ํ•œ ๋งˆ์šฐ์Šค ๋™์ž‘.

FabricWeb ๋ฒ„์ „์—์„œ์™€ ๊ฐ™์ด ์Šคํ”ผ๋„ˆ ๋ฒ„ํŠผ์„ ํ‘œ์‹œํ•˜๋Š” ๊ธฐ๋Šฅ.

ํ˜„์žฌ ์•ฑ์—์„œ TextBox๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋‹ค๋ฅธ ๋ชจ๋“  ์‚ฌ๋žŒ์—๊ฒŒ ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ณ  TextBox ์œ ํ˜•์„ ์ •์˜ํ•˜๋Š” ๋™์ž‘ ์—ด๊ฑฐํ˜•๊ณผ ํ•จ๊ป˜ ์ด๋Ÿฌํ•œ ๋ชจ๋“  ๊ฒƒ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ข‹์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋ฒ„ํŠผ์ฒ˜๋Ÿผ ์ž‘๋™ํ•˜๋Š” ๊ฒ€์ƒ‰์ด๋‚˜ ๋‹ฌ๋ ฅ์„ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋Š” ์•„์ด์ฝ˜๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ TextBox ๋™์ž‘์„ ๊ฒฐํ•ฉํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜†์— ์žˆ๋Š” ํ…์ŠคํŠธ์— ์ž…๋ ฅํ•  ๋•Œ ์ž๋ฆฌ ํ‘œ์‹œ์ž ํ…์ŠคํŠธ ์Šคํƒ€์ผ๋กœ "http://"๋ฅผ ํ‘œ์‹œํ•˜๋Š” IP ์ฃผ์†Œ ๋˜๋Š” URL๊ณผ ๊ฐ™์€ ํ•ญ๋ชฉ์— ๋Œ€ํ•œ ๋งˆ์Šคํฌ์ž…๋‹ˆ๋‹ค.

FabricWeb์€ TextFields์™€ ํ•จ๊ป˜ ๋งค์šฐ ๋‹ค์–‘ํ•ฉ๋‹ˆ๋‹ค.

https://developer.microsoft.com/en-us/fabric#/controls/web/textfield

https://developer.microsoft.com/en-us/fabric#/controls/web/spinbutton

์ด๋Ÿฌํ•œ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ TextBox ์ปจํŠธ๋กค์— ๊ตฝ๋Š” ๋Œ€์‹  ๊ณ ์œ ํ•œ NumberBox ์ปจํŠธ๋กค์„ ์‚ฌ์šฉํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค(์ž…๋ ฅ ๋ชจ๋“œ "๋น„๋ฐ€๋ฒˆํ˜ธ"๊ฐ€ ์žˆ๋Š” TextBox๊ฐ€ ์•„๋‹Œ PasswordBox ์ปจํŠธ๋กค๋„ ์žˆ๋Š” ๊ฒƒ๊ณผ ์œ ์‚ฌ).

NumberBox ์ปจํŠธ๋กค์€ ์˜ˆ๋ฅผ ๋“ค์–ด IP ์ฃผ์†Œ์— ๋Œ€ํ•œ ๋‹จ์ˆœํ•œ ์ž…๋ ฅ ํ•„๋“œ ๊ทธ ์ด์ƒ์ž…๋‹ˆ๋‹ค. ๊ณ ์œ ํ•œ ์ ‘๊ทผ์„ฑ/๊ณ ์œ ํ•œ ์Šคํฌ๋กค ๋ฐ ๋Œ๊ธฐ ๊ธฐ๋Šฅ, ๊ณ„์‚ฐ๊ธฐ ์ง€์› ๋“ฑ์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ์ด ๋ชจ๋“  ๊ฒƒ์ด ์ง€๊ธˆ๊นŒ์ง€ ์ผ๋ฐ˜์ ์œผ๋กœ TextBox๋ฅผ ์‚ฌ์šฉํ–ˆ๋˜ ๋ฐฉ์‹๊ณผ ์ƒ๋‹นํžˆ ๊ตฌ๋ณ„๋ฉ๋‹ˆ๋‹ค(๊ทธ๋ฃน์˜ ํ‘œํ˜„ ์ด๋ฆ„์„ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๊ฐ„๋‹จํ•œ ๊ฒฝ์šฐ). ๋ฐ์ดํ„ฐ). ๊ทธ๋ฆฌ๊ณ  NumberBox ์ปจํŠธ๋กค์— ๋Œ€ํ•ด ๋” ๋งŽ์€ ํŠน์ˆ˜ ๊ธฐ๋Šฅ/์š”๊ตฌ ์‚ฌํ•ญ์ด ์ œ์•ˆ๋จ์— ๋”ฐ๋ผ NumberBox์™€ TextBox๋ฅผ ํ›Œ๋ฅญํ•˜๊ณ  ๊น”๋”ํ•˜๊ฒŒ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•ด๋‹น ์ฐฝ์€ ๋ฌธ์„œ ๋ฐ ์•ฑ xaml ๋ ˆ์ด์•„์›ƒ์—๋„ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค(์˜ˆ: ์ž…๋ ฅ ๋ชจ๋“œ๋ฅผ ์ง€์ •ํ•˜๋Š” ์†์„ฑ ์ค‘ ํ•˜๋‚˜๊ฐ€ ํฌํ•จ๋œ ์—ฌ๋Ÿฌ ์†์„ฑ์ด ์žˆ๋Š” TextBox๋ณด๋‹ค NumberBox๋ฅผ ๋” ์‰ฝ๊ฒŒ ๊ฐ์ง€ํ•  ์ˆ˜ ์žˆ์Œ). ์ˆซ์ž ์ž…๋ ฅ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ TextBox ๋ฌธ์„œ๋ฅผ ์ฝ๋Š” ๋Œ€์‹  ํ•ด๋‹น ๋ถ€๋ถ„์€ ํŠน์ • NumberBox ์ œ์–ด ๋ฌธ์„œ(์˜ค๋Š˜๋‚  PasswordBox์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ)์—์„œ ํ›Œ๋ฅญํ•˜๊ณ  ๊น”๋”ํ•ฉ๋‹ˆ๋‹ค.

์ปจํŠธ๋กค์˜ ๋ชจ์–‘๊ณผ ๊ด€๋ จํ•˜์—ฌ ๋‹จ์œ„/์ ‘๋ฏธ์‚ฌ๋Š” ๊ฐ’ ์ž์ฒด์™€ ๊ตฌ๋ณ„๋˜๋„๋ก ๋” ์ž‘์€ ํฌ๊ธฐ/์ฑ„๋„๊ฐ€ ๋‚ฎ์€ ์ƒ‰์ƒ์œผ๋กœ ์˜†์— ํ‘œ์‹œ๋  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

Image 1

๋งˆ์šฐ์Šค๊ฐ€ ์ปจํŠธ๋กค ์œ„๋กœ ์ด๋™ํ•˜๋ฉด ์œ„/์•„๋ž˜ ํ™”์‚ดํ‘œ๊ฐ€ ์žฅ์น˜ ๋Œ€์‹  ํŽ˜์ด๋“œ์ธ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Image 1

๋Œ€์•ˆ์€ figma.com์˜ ์ˆซ์ž ์ปจํŠธ๋กค์ž…๋‹ˆ๋‹ค. ์žฅ์น˜ ์œ„๋กœ ๋งˆ์šฐ์Šค๋ฅผ ๊ฐ€์ ธ๊ฐˆ ๋•Œ ํด๋ฆญ+์™ผ์ชฝ/์˜ค๋ฅธ์ชฝ์œผ๋กœ ๋Œ์–ด ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

image

์™ผ์ชฝ/์˜ค๋ฅธ์ชฝ์€ ์œ„/์•„๋ž˜๋ณด๋‹ค ๋งˆ์šฐ์Šค๋ฅผ ์™ผ์ชฝ/์˜ค๋ฅธ์ชฝ์œผ๋กœ ์›€์ง์ด๋Š” ๊ฒƒ์ด ๋” ์‰ฝ๊ธฐ ๋•Œ๋ฌธ์— ํฅ๋ฏธ๋กญ์Šต๋‹ˆ๋‹ค(์†๋ชฉ์„ ๋“ค ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค).

๋‹ค๋ฅธ ๊ฒƒ๋“ค:

  • ์ดˆ์ ์ด ๋งž์ง€ ์•Š๋Š” ํ…์ŠคํŠธ ์˜์—ญ์„ ํด๋ฆญํ•˜๋ฉด ๋ชจ๋“  ๋‚ด์šฉ์ด ์„ ํƒ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํด๋ฆญ+๊ฐ’ ์ž…๋ ฅ+Enter๊ฐ€ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋„๋ก
  • Shift+ํ™”์‚ดํ‘œ๋ฅผ ํด๋ฆญํ•˜๊ฑฐ๋‚˜ Shift+์œ„/์•„๋ž˜๋กœ ์ดˆ์ ์„ ๋งž์ถ”๋ฉด 10์”ฉ ์ฆ๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๊ฐ์†Œํ•ฉ๋‹ˆ๋‹ค(ํ•ด๋‹น ๊ฐ’๋„ ์‚ฌ์šฉ์ž ์ •์˜ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค).
  • ์œ„/์•„๋ž˜ ํ™”์‚ดํ‘œ๊ฐ€ ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ทธ๋‹ค์ง€ ์œ ์šฉํ•˜์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์ •ํ™•ํ•œ ๊ฐ’์„ ์›ํ•˜๋ฉด ์ž…๋ ฅํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋˜๊ณ , ์›ํ•˜๋Š” ๊ฐ’์ด ๋ฌด์—‡์ธ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ํด๋ฆญ+๋“œ๋ž˜๊ทธ๋กœ ๊ฐ’ ๋ณ€๊ฒฝ ๋ฒ”์œ„๋ฅผ ์‹œ๊ฐํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์œ„/์•„๋ž˜ ํ™”์‚ดํ‘œ๋Š” ์ตœ์†Œํ•œ ์„ ํƒ ์‚ฌํ•ญ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@adrientetar ์ปจํŠธ๋กค ๋‚ด๋ถ€์— ๋‹จ์œ„ ํ‘œ์‹œ๋ฅผ ๋„ฃ์œผ๋ฉด ์ถ”๊ฐ€ ๋ฌธ์ œ๊ฐ€ ๋งŽ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

  • ํ˜„์ง€ํ™”
  • ์ ‘๊ทผ์„ฑ
  • ์„ ํƒ
  • ๋ถ™์—ฌ๋„ฃ๊ธฐ
  • ์ „ํ™˜

ํ—ค๋”, ์„ค๋ช… ๋˜๋Š” ๋ณ„๋„์˜ TextBlock์— ์ด๊ฒƒ์„ ๋„ฃ์œผ๋ฉด ๋ชจ๋‘ ํ”ผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Value ์†์„ฑ์ด ์žˆ๋Š” ๋ณ„๋„์˜ NumberBox ์ปจํŠธ๋กค์„ ์‚ฌ์šฉํ•˜๊ณ  Text ์†์„ฑ์ด ์•„๋‹ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. Value๋Š” Double์ด์–ด์•ผ ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ(x:Bind)ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Decimal ๋ฐ์ดํ„ฐ ์œ ํ˜•๋„ ์ง€์›ํ•ด์•ผ ํ•˜๋Š”์ง€, ์–ด๋–ป๊ฒŒ ์ง€์›ํ•ด์•ผ ํ•˜๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

nullable ์ˆซ์ž์— ๋Œ€ํ•œ ์ง€์›์€ ๋‚ด๊ฐ€ ์ƒ๊ฐํ•˜๋Š” MUST์ž…๋‹ˆ๋‹ค(@xyzzer์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค). Value ์†์„ฑ์€ Nullable์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.๋ฐ์ดํ„ฐ ํ˜•์‹. nullable์ด ์•„๋‹Œ ๊ฐ’์— ๋ฐ”์ธ๋”ฉํ•  ๋•Œ ๋ฐ”์ธ๋”ฉ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ตฌ์„ฑ์—๋Š” ์ด์ ์ด ์žˆ๊ณ  ๋ฒˆํ˜ธ ๋งค๊ธฐ๊ธฐ์— ๋Œ€ํ•œ ์ฒจ๋ถ€๋œ ๋™์ž‘์ด ์žˆ๋Š” ๋ฐ˜๋ฉด
๋ชจ๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  TextBox์— ์ฒจ๋ถ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋ถˆํ•„์š”ํ•˜๊ฒŒ ๋ณต์žกํ•˜๊ณ  ์ œํ•œ์ ์ž…๋‹ˆ๋‹ค.
๊ตฌํ˜„๊ณผ ๊ด€๋ จํ•˜์—ฌ ๋ถ€๋”ชํž ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ๋ฌธ์ œ ์ค‘ ์ผ๋ถ€๋Š”
์ ‘๊ทผ์„ฑ. ์ผ๋ถ€ ์ ‘๊ทผ์„ฑ ํŒจํ„ด์„ ์ง€์›ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
ํŠน์ • ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ TextBox์— ๊ตฌํ˜„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
TextBox๊ฐ€ ์ˆซ์ž ์ƒ์ž ๋ชจ๋“œ์— ์žˆ์ง€ ์•Š์œผ๋ฉด ํ˜ผ๋ž€์Šค๋Ÿฌ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2019๋…„ 5์›” 20์ผ ์›”์š”์ผ ์˜ค์ „ 2:33 Fons Sonnemans [email protected]
์ผ๋‹ค:

nullable ์ˆซ์ž์— ๋Œ€ํ•œ ์ง€์›์€ ๋‚ด๊ฐ€ ์ƒ๊ฐํ•˜๋Š” ํ•„์ˆ˜ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค(@xyzzer์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.
https://github.com/xyzzer ). Value ์†์„ฑ์€ Nullable์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๋ฐ์ดํ„ฐ ํ˜•์‹. ๋ฐ”์ธ๋”ฉํ•  ๋•Œ ๋ฐ”์ธ๋”ฉ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
nullable์ด ์•„๋‹Œ ๊ฐ’.

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/microsoft/microsoft-ui-xaml/issues/483?email_source=notifications&email_token=AANMBMBGVQ36CDPQO6CWKLPWJV55A5CNFSM4HA4PBNKYY3PNVWWK3TUL52HS4DFVREWSG43VMVBWJ63
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AANMBMBTHT2UXOAGRTEDF7LPWJV55ANCNFSM4HA4PBNA
.

๋ชจ๋‘์—๊ฒŒ ์งˆ๋ฌธ์ด ํ•˜๋‚˜ ๋” ์žˆ์Šต๋‹ˆ๋‹ค. ์ž…๋ ฅ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๋˜๋Š” ๋งˆ์Šคํ‚น์ด ํ•„์š”/์„ ํ˜ธํ•ฉ๋‹ˆ๊นŒ?

( @sonnemaf , @ArchieCoder , @robloo , @mdtauk , @adrientetar , @xyzzer ๋ฐ @Felix-Dev )

๋ฌธ์ž์—ด์— ์ˆซ์ž๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๊ฐ€ ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ˆ˜ํ•™ ์—ฐ์‚ฐ์ž๋ฅผ ํ‰๊ฐ€ํ•˜๊ณ  ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ณ„์‚ฐํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ ํ‘œ์‹œ๋˜๋Š” ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ? ํ™•์‹ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋งˆ์Šคํ‚น์€ ์œ ์šฉํ•˜์ง€๋งŒ URL ๋ฐ ์ด๋ฉ”์ผ ์ž…๋ ฅ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ…์ŠคํŠธ ์ƒ์ž ์ž์ฒด์— ๋‚ด์žฅ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. NumberBox๋Š” ์ „ํ™”๋ฒˆํ˜ธ, IP ๋“ฑ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ „ํ™”๋ฒˆํ˜ธ๋‚˜ IP์— NumberBox๋ฅผ ์‚ฌ์šฉํ•ด์„œ๋Š” ์•ˆ ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ TextBox์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ๋งˆ์Šคํ‚น/ํ•„ํ„ฐ๋ง ํ™•์žฅ๊ณผ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค. NumberBox๋Š” ๋‹จ์ผ ๊ฐ’์„ ์ž…๋ ฅํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋ ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์•„๋งˆ๋„ ํ†ตํ™” ์ƒ์ž ์ปจํŠธ๋กค์„ ๊ฐ€์งˆ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์ง€๋งŒ TB ๋˜๋Š” NB์™€ ๋‹ค๋ฅธ ๋ณ„๋„์˜ ์ปจํŠธ๋กค์ด ๋˜์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@xyzzer ๋ชจ๋“  ์ข…๋ฅ˜์˜ ์ˆซ์ž ์ž…๋ ฅ์— ๋Œ€ํ•ด NumberBox๋ฅผ ๋” ์œ ์—ฐํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ์ข‹์€ ์ƒ๊ฐ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. TextBox ์ปจํŠธ๋กค์—์„œ ํŒŒ์ƒ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ ํ•ด๋‹น ์ปจํŠธ๋กค์—๋Š” Mask ์†์„ฑ๊ณผ ๊ธฐํƒ€ ๋™์ž‘ ์†์„ฑ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

NumberBox์˜ ์†์„ฑ ์ค‘ ์ผ๋ถ€๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์Šคํ”ผ๋„ˆ ๋ฒ„ํŠผ ํ‘œ์‹œ/์ˆจ๊ธฐ๊ธฐ
  • ๊ฐ’์˜ ์ฆ๊ฐ€ ๋ฐ ๊ฐ์†Œ ํ—ˆ์šฉ
  • ๊ฐ’ ๊ณ„์‚ฐ ํ—ˆ์šฉ
  • ๋งˆ์Šคํ‚น๋œ ์ž…๋ ฅ ํ—ˆ์šฉ
  • ์ „ํ™”๋ฒˆํ˜ธ ๋˜๋Š” IP ์ฃผ์†Œ์™€ ๊ฐ™์€ ํ˜„์ง€ํ™”๋œ ๋งˆ์Šคํฌ

TextBox์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ์†์„ฑ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • Mask ์†์„ฑ - ์‚ฌ์šฉ์ž ์ง€์ • ํ˜•์‹([email protected])๊ณผ ์šฐํŽธ/์šฐํŽธ ๋ฒˆํ˜ธ์™€ ๊ฐ™์€ ์ง€์—ญํ™”๋œ ๋งˆ์Šคํฌ๋ฅผ ์ •์˜ํ•˜๋Š” XAML ๋ฌธ์ž์—ด
  • ์ ‘๋‘์‚ฌ/์ ‘๋ฏธ์‚ฌ ํ…์ŠคํŠธ ํ‘œ์‹œ(์˜ˆ: ์ ‘๋‘์‚ฌ๋กœ _http://_)
  • ์ž‘์—… ๋ฒ„ํŠผ ํ‘œ์‹œ/์ˆจ๊ธฐ๊ธฐ - ์•„์ด์ฝ˜ ๋ฐ ํด๋ฆญ ์ด๋ฒคํŠธ ์†์„ฑ ํฌํ•จ
  • ์•„์ด์ฝ˜(Fabric UI ๊ฒ€์ƒ‰ ์ƒ์ž๋Š” ์™ผ์ชฝ์— ์•„์ด์ฝ˜์„ ํ‘œ์‹œํ•˜๊ณ  ์ƒ์ž์— ํฌ์ปค์Šค๊ฐ€ ์žˆ์„ ๋•Œ ์• ๋‹ˆ๋ฉ”์ด์…˜์œผ๋กœ ํ‘œ์‹œ๋จ)

image

image

์ด ์ด๋ฏธ์ง€๋Š” Fabric UI TextField์˜ ์ด๋ฏธ์ง€์ด๋ฉฐ ์ด ๋ชจ๋“  ๋‹ค์–‘ํ•œ ์ƒํƒœ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ Fluent WinUI 3.0 ์ปจํŠธ๋กค์„ ํŒจ๋ฆฌํ‹ฐ๋กœ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

image

Fabric UI Spinner ๋ฒ„ํŠผ์€ ํ„ฐ์น˜ํ•˜๊ธฐ์—๋Š” ๋„ˆ๋ฌด ์ž‘๊ธฐ ๋•Œ๋ฌธ์— ์œ„์•„๋ž˜ ๋ฒ„ํŠผ์ด ์„œ๋กœ ๊ฒน์ณ์ง€์ง€ ์•Š๊ณ  ๋‚˜๋ž€ํžˆ ์žˆ๋„๋ก ํ˜•์‹์„ ๋‹ค๋ฅด๊ฒŒ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜์—๊ฒŒ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋Š” ํ•„์ˆ˜์ด๋ฉฐ ๋งˆ์Šคํ‚น์€ ์žˆ์œผ๋ฉด ์ข‹์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋งˆ์Šคํ‚น์„ ์ข‹์•„ํ•˜์ง€ ์•Š์•˜๋‹ค. ๋„ˆ๋ฌด ๋”ฑ๋”ฑํ•ฉ๋‹ˆ๋‹ค.

@rudyhuyn ์€ Windows ๊ณ„์‚ฐ๊ธฐ ์ €์žฅ์†Œ์—์„œ ์ข‹์€ ๊ธฐ๋Šฅ์„ ์ œ์•ˆํ–ˆ์Šต๋‹ˆ๋‹ค. @mdtauk์ด(๊ฐ€) ๋Œ“๊ธ€ ์„

๋‚ ์งœ/์‹œ๊ฐ„/๋‹ฌ๋ ฅ ์„ ํƒ๊ธฐ์™€ ์œ ์‚ฌํ•œ NumberBox์—์„œ ๊ณ„์‚ฐ๊ธฐ ํŒ์—…์„ ์—ด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

image

@xyzzer ๊ฐ€ ์œ„์—์„œ ๋งํ•œ ๊ฒƒ๊ณผ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ˆซ์ž์™€ ์ผ๋ จ์˜ ์ˆซ์ž๋ฅผ ํฌํ•จํ•˜๋Š” ๋ฌธ์ž์—ด ์‚ฌ์ด์—๋Š” ๊ทผ๋ณธ์ ์ธ ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
์„ค๋ช…๋œ ์ฐจ์ด์ ์„ ๊ฐ€์žฅ ์ž˜ ๋“ค์€ ๊ฒƒ์€ ์ˆซ์ž์— ๋Œ€ํ•ด ๊ณฑ์…ˆ๊ณผ ๋‚˜๋ˆ—์…ˆ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ˆซ์ž์˜ ์ ˆ๋ฐ˜์„ ์š”์ฒญํ•˜๊ณ  2๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐํŽธ ๋ฒˆํ˜ธ์˜ ์ ˆ๋ฐ˜์ด๋‚˜ "์ „ํ™” ๋ฒˆํ˜ธ"๋ฅผ ์š”๊ตฌํ•˜๊ณ  ์˜๋ฏธ์žˆ๋Š” ๊ฒƒ์„ ์–ป์„ ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค.

์ˆซ์ž๋กœ ๊ตฌ์„ฑ๋œ ๋‹ค๋ฅธ ๊ฐ’์„ ์บก์ฒ˜ํ•˜๋Š” ๊ธฐ๋Šฅ๊ณผ ์ˆ˜ํ•™์  ๊ธฐ๋Šฅ์ด ์žˆ๋Š” ํŠน์ • NumberBox ๋ฅผ ํ˜ผํ•ฉํ•˜๋ฉด ๋‹ค๋ฅธ ๋ฌธ์ œ๋„ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
"์ „ํ™” ๋ฒˆํ˜ธ"๋Š” ์„ ํ–‰ 0(๋˜๋Š” ๋”ํ•˜๊ธฐ ๊ธฐํ˜ธ)์œผ๋กœ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ฑฐ๊ธฐ์— ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. _์ˆซ์ž_์˜ ๊ฒฝ์šฐ์—๋Š” ์ œ๊ฑฐ๋˜์ง€ ์•Š์œผ๋ฉฐ ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค.
"์ „ํ™” ๋ฒˆํ˜ธ"๋Š” ์ข…์ข… ๋Œ€๊ด„ํ˜ธ์™€ ํ•˜์ดํ”ˆ์œผ๋กœ ํ˜•์‹์ด ์ง€์ •๋ฉ๋‹ˆ๋‹ค. ์ˆ˜ํ•™์  ์—ฐ์‚ฐ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜๋ฉด ๊ณฑ์…ˆ๊ณผ ๋บ„์…ˆ์ด ํ•„์š”ํ•œ ๊ฒƒ์œผ๋กœ ์‰ฝ๊ฒŒ ํ•ด์„๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

TextBox ์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๋งˆ์Šคํ‚น์„ ํ—ˆ์šฉํ•˜๊ณ  ์ž…๋ ฅ ํ˜•์‹์„ ์ง€์ •ํ•˜๋ฉด NumberBox ์™€ TextBox ์™€ ๊ฐ๊ฐ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์‹œ๊ธฐ์— ํ˜ผ๋™์„ ์ผ์œผํ‚ฌ ์œ„ํ—˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ„๋‹จํ•œ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋Š” ํ•„์ˆ˜ ์‚ฌํ•ญ์ด์ง€๋งŒ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๊ฐ€ ํ”Œ๋žซํผ์— ์˜ฌ ๋•Œ ์ถฉ๋Œํ•˜๋Š” ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๋ฐฉ๋ฒ•์ด ์žˆ๊ฑฐ๋‚˜ ๊ฐœ๋ฐœ์ž๊ฐ€ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ์—ฌ๋Ÿฌ ์œ„์น˜๋กœ ํผ๋œจ๋ฆฌ๋„๋ก ์‰ฝ๊ฒŒ ๋๋‚ผ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ์ฃผ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. .

๋‹ค์Œ ์†์„ฑ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.

  • ์ตœ๋Œ€๊ฐ’
  • ์ตœ์†Œ๊ฐ’
  • AllowDecimalPlaces

๋ณ„๋„๋กœ ํ‘œ์‹œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ๊ณ„์‚ฐ์˜ ์ž˜๋ชป๋œ ์ถœ๋ ฅ
  • ์ž…๋ ฅ/๋ถ™์—ฌ๋„ฃ๊ธฐ/๊ณ„์‚ฐ๋œ ๊ฐ’์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ๋ฐ”์ธ๋”ฉ์— ์‚ฌ์šฉ๋˜๋Š” ํ•ญ๋ชฉ. ์œ ํšจํ•˜์ง€ ์•Š์Œ์„ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด ๊ณ„์‚ฐ ๋˜๋Š” ์œ ํšจํ•˜์ง€ ์•Š์€ ๊ฐ’์„ ํ‘œ์‹œํ•  ํ•„์š”๊ฐ€ ์žˆ์ง€๋งŒ ์ด๋Š” ์ง€์› ์†์„ฑ์— ์ „๋‹ฌํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋งˆ์Šคํฌ๋Š” ํ•„์š”ํ•œ ๊ฒƒ์„ ๋ช…ํ™•ํžˆ ํ•˜๊ธฐ ์œ„ํ•ด ์‹œ๊ฐ์  ์–ดํฌ๋˜์Šค๊ฐ€ ํ•„์š”ํ•˜์ง€๋งŒ ๊ธฐ๋ณธ ๊ณ„์‚ฐ ์ž…๋ ฅ์€ ๋งˆ์Šคํฌ๋œ ์ž…๋ ฅ๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Fabric ์›น ํ…์ŠคํŠธ ์ปจํŠธ๋กค์€ ์ด๋ฅผ ์ž˜ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ ๋ฌผ๋ก  NumberBox์˜ ๋ฒ”์œ„๋Š” ๊ธฐ๋ณธ TextBox ์ปจํŠธ๋กค์— ๋Œ€ํ•œ ์ผ๋ฐ˜์ ์ธ ๋งž์ถค ๋ฐ ๋งˆ๋ฌด๋ฆฌ ๊ฐœ์„  ์‚ฌํ•ญ๊ณผ ๋ณ„๊ฐœ์ž…๋‹ˆ๋‹ค.

์Šคํ”ผ๋„ˆ ๋ฒ„ํŠผ(๋ฐ ์˜ต์…˜์ธ ๊ณ„์‚ฐ๊ธฐ ํ”Œ๋ผ์ด์•„์›ƒ)์€ NumberBox์™€ ๊ด€๋ จ๋œ ์œ ์ผํ•œ ์‹œ๊ฐ์  ์š”์†Œ์ž…๋‹ˆ๋‹ค.

์†์„ฑ์˜ ๊ฒฝ์šฐ ๊ฐ’ ๋ณ€๊ฒฝ์„ ์œ„ํ•ด ํ‚ค๋ณด๋“œ ์œ„/์•„๋ž˜ ๋ฒ„ํŠผ์ด ํ™œ์„ฑํ™”๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ ํ‚ค๋ฅผ ๋ˆ„๋ฅผ ๋•Œ ์ฆ๊ฐ€ ๋˜๋Š” ๊ฐ์†Œํ•  ์ •๋„๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋„๋ก ๋‹จ๊ณ„ ๊ฐ’์ด ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@mdtauk , ๋‚˜๋Š” Step ๊ฐ’์„ ์ข‹์•„ํ•˜์ง€๋งŒ ํ‚ค ๋ˆ„๋ฆ„๋ฟ๋งŒ ์•„๋‹ˆ๋ผ. ์Šคํฌ๋กค ๋ฐ ์œ„/์•„๋ž˜ ๋ฒ„ํŠผ์—๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

@sonnemaf ๋ฌผ๋ก , Step์€ ๋งˆ์šฐ์Šค ํœ  ํ‹ฑ, ํ‚ค ๋ˆ„๋ฆ„ ๋˜๋Š” ํ‚ค ๋‹ค์šด๊ณผ ๊ฐ™์€ ๋ฐ”์ด๋„ˆ๋ฆฌ์— ์ข‹์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ์ƒ์ž์—์„œ ๋ฉ€์–ด์ง€๋Š” ๊ฑฐ๋ฆฌ๊ฐ€ ๋‹จ๊ณ„ ์–‘์„ ์ฆ๊ฐ€์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๊ทธ๋ž˜์„œ StepMinimum ๊ณผ StepMaximum์€ ์•„๋งˆ๋„?

๊ทธ๋ž˜์„œ StepMinimum๊ณผ StepMaximum์€ ์•„๋งˆ๋„?

๋‚˜๋Š” ๊ทธ ๊ฐ€์น˜๊ฐ€ ๋ฌด์—‡๊ณผ ๊ด€๋ จ์ด ์žˆ๋Š”์ง€ ๋˜๋Š” ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ๋ฌด์—‡์„ ๊ธฐ๋Œ€ํ•ด์•ผ ํ•˜๋Š”์ง€ ์ „ํ˜€ ๋ชจ๋ฆ…๋‹ˆ๋‹ค.
"Step"์˜ ๋ชฉ์ ์ด ์ฆ๋ถ„์„ ์ •์˜ํ•˜๋Š” ๊ฒƒ์ด๋ผ๋ฉด "Increment"๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด Max:100 Min:0 Increment:10 ์—์„œ 0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100 ๊ฐ’๋งŒ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋“œ๋ž˜๊ทธํ•œ ๊ฑฐ๋ฆฌ์— ๋”ฐ๋ผ ๋‹จ๊ณ„/์ฆ๊ฐ€๋Ÿ‰์ด ๋‹ฌ๋ผ์ง€๋ฉด ์˜ˆ์ธกํ•  ์ˆ˜ ์—†๋Š” ๊ฐ’ ๋ณ€๊ฒฝ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ปจํŠธ๋กค์˜ ๋ชฉ์ ์ด ์ˆซ์ž ๊ฐ’์„ ๋” ์‰ฝ๊ฒŒ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด๋ผ๋ฉด ๊ฐ’์ด ๋‹ค์–‘ํ•œ ์–‘์œผ๋กœ ๋ณ€๊ฒฝ๋˜๊ธฐ ์‹œ์ž‘ํ•˜๋ฉด ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์ „์šฉ ์ปจํŠธ๋กค์„ ๊ฐ–๋Š” ๊ธฐ๋ณธ ๋ชฉํ‘œ๋ฅผ ๋ฌด์ฐŒ๋ฅด๋Š” ๋งค์šฐ ์‹ค๋ง์Šค๋Ÿฌ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@mrlacey ์Šฌ๋ผ์ด๋” ๋ฐ ์ง„ํ–‰๋ฅ  ํ‘œ์‹œ์ค„์— ๋Œ€ํ•ด ๋ช…๋ช…๋œ ์†์„ฑ์ด๋ฏ€๋กœ Step์„ ์‚ฌ์šฉํ•˜์ง€๋งŒ ์›ํ•˜๋Š” ๊ฒฝ์šฐ ์ฆ๋ถ„์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ๊ฐ€๊ฐ€ ๊ฐ’์˜ ์ฆ๊ฐ€์™€ ํ˜ผ๋™๋˜์ง€ ์•Š๋Š” ํ•œ ๊ฐ’์€ ์˜ค๋ฅด๋ฝ๋‚ด๋ฆฌ๋ฝํ•ฉ๋‹ˆ๋‹ค.

๊ฐ’์„ ๋†’์ด๊ฑฐ๋‚˜ ๋‚ฎ์ถ”๊ธฐ ์œ„ํ•ด ์œ„ ๋˜๋Š” ์•„๋ž˜๋กœ ํด๋ฆญํ•˜๊ณ  ๋“œ๋ž˜๊ทธํ•˜๋Š” ์ œ์•ˆ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐ’์ด ๋” ๋นจ๋ฆฌ ๋ณ€๊ฒฝ๋˜๊ธฐ๋ฅผ ๊ธฐ๋Œ€ํ•˜๋ฉด ๋” ์œ„ ๋˜๋Š” ์•„๋ž˜๋กœ ๋“œ๋ž˜๊ทธํ•œ ๋‹ค์Œ Stap Min ๋ฐ Max ๊ฐ’์ด ์žˆ์œผ๋ฉด ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ธํƒ€๊ฐ€ ๋ณ€๊ฒฝ๋  ๋•Œ ์ด๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ž‘์€ ๋Œ๊ธฐ ๊ฑฐ๋ฆฌ๋Š” 0.1 ๋˜๋Š” 1 ์”ฉ ์ฆ๊ฐ€ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋” ๋Œ๋ฉด ์˜ˆ๋ฅผ ๋“ค์–ด 5 ๋˜๋Š” 10 ์”ฉ ๋ณ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋“œ๋ž˜๊ทธ ๊ฑฐ๋ฆฌ๊ฐ€ ๊ฐ’ ๋ณ€๊ฒฝ ์†๋„๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผ ํ•œ๋‹ค๊ณ  ๋งํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋‹จ์ง€ ๊ทธ๊ฒƒ์ด ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋Š๊ปด์ง€๊ณ  ์‚ฌ์šฉ์ž์—๊ฒŒ ์ž์‹ ๊ฐ๊ณผ ์ œ์–ด๋ ฅ์„ ์ œ๊ณตํ•œ๋‹ค๋ฉด ๋„์›€์ด ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ์•„์ด๋””์–ด์ผ ๋ฟ์ž…๋‹ˆ๋‹ค.

๋ฉ‹์ง„ ํ”ผ๋“œ๋ฐฑ, ์—ฌ๋Ÿฌ๋ถ„! ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ๋ง์น˜๊ธฐ ์‹œ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์–‘ ๋ฐ PR ์„ ์—ด์—ˆ์Šต๋‹ˆ๋‹ค.

@KevinTXY ๊ฐ€ ์ด ์ปจํŠธ๋กค์˜ ๊ฐœ๋ฐœ์ž๋กœ ์ €์™€ ํ•ฉ๋ฅ˜ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ์š”๊ตฌ ์‚ฌํ•ญ ๋Œ€ํ™”๋ฅผ ๊ณ„์† ์ง„ํ–‰ํ•˜๊ณ  PR์— ๋Œ€ํ•œ API/์˜ˆ์ œ ํŠน์ • ๋Œ€ํ™”๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์–‘ ์ž‘์„ฑ์— ์ฐธ์—ฌํ•˜๋„๋ก ๊ฒฉ๋ คํ•ด ์ฃผ์‹ญ์‹œ์˜ค.

TeachingTip์˜ ์‚ฌ์–‘ ์€ ์™„์„ฑ๋œ ์‚ฌ์–‘์ด ์–ด๋–ป๊ฒŒ ์ƒ๊ฒผ๋Š”์ง€์— ๋Œ€ํ•œ ์™„์ „ํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ ์˜ˆ์ž…๋‹ˆ๋‹ค. ์ฃผ์š” ๊ฐœ์š”๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์„ค๋ช…
  • ๋ชจ๋“  API/๊ธฐ๋Šฅ์˜ ์˜ˆ
  • ์ง€์นจ
  • API(IDL)

ํ›Œ๋ฅญํ•œ ์•„์ด๋””์–ด, ๋‚˜๋Š” ์ด ๋ชจ๋“  ๊ฒƒ์ด ์–ด๋””๋กœ ๊ฐ€๋Š”์ง€ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด ๋‘ ์„ผํŠธ ์ถ”๊ฐ€:

  • ์˜์‹ฌํ•  ์—ฌ์ง€ ์—†์ด TextBox์™€ ํ†ตํ•ฉ๋˜๋Š” ๋Œ€์‹  ๋ณ„๋„์˜ NumberBox์—ฌ์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์—ฌ๊ธฐ์—์„œ ์„ค๋ช…ํ•˜๋Š” ์ข‹์€ ๊ธฐ๋Šฅ์ด ๋งŽ์ด ์žˆ์ง€๋งŒ NumberBox๋„ ๊ฐ€๋ณ๊ฒŒ ์œ ์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ €๋Š” NumberBox์—์„œ CalculatorBox ๋˜๋Š” ์ด์™€ ์œ ์‚ฌํ•œ ๊ฒƒ์„ ํŒŒ์ƒํ•  ๊ฒƒ์„ ์ œ์•ˆํ•˜๋ฉฐ ๊ณ ๊ธ‰ "2+3" ์ž…๋ ฅ ๋˜๋Š” ๊ณ„์‚ฐ๊ธฐ๋ฅผ ์—ฌ๋Š” ๋ฒ„ํŠผ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํ˜„์ง€ํ™”๋Š” ์‚ฌ์ „์— ์‚ฌ์–‘์—์„œ ์ž˜ ์ƒ๊ฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ UI ๋กœ์ปฌ์„ ์žฌ์ •์˜ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ NumberformatInfo ์†์„ฑ ๋˜๋Š” CultureInfo๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ๋งค์šฐ ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ผ๋ถ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ๋Š” ์™ธ๋ถ€ ๊ฐ’๊ณผ ๋กœ์ปฌ ๊ฐ’์ด ๋ชจ๋‘ ์ถ”์ ๋ฉ๋‹ˆ๋‹ค. ๊ฐ๊ฐ์€ ์ž ์žฌ์ ์œผ๋กœ ๋‹ค๋ฅธ ํ˜•์‹์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ปจํŠธ๋กค์€ ์†Œ์ˆ˜์  ์ดํ•˜ ์ž๋ฆฟ์ˆ˜ ์ด๋™์„ ์ง€์›ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋ณ€๊ฒฝ๋œ ๋ชจ๋“  ํ…์ŠคํŠธ์˜ ํ˜•์‹์„ ๋‹จ์ˆœํžˆ ๊ฒ€์ฆํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ๊นŒ๋‹ค๋กญ์Šต๋‹ˆ๋‹ค. ๊ฐ ๋ฌธ์ž ์ž…๋ ฅ์„ ์ถ”์ ํ•ด์•ผ ํ•˜๋ฉฐ ํ•„์š”์— ๋”ฐ๋ผ ์ด์ „ ์†Œ์ˆ˜์  ์ž๋ฆฌ๋ฅผ ๋Œ€์ฒดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ชจ๋“  ์ฆ๊ฐ€/๊ฐ์†Œ ํ™”์‚ดํ‘œ๋Š” ์ผ๋ฐ˜ ์ž…๋ ฅ ์ƒ์ž๋ฅผ ๊ฐ–๋„๋ก ๋„๋„๋ก ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์‹œ ํ•œ ๋ฒˆ ๋‹ค๋ฅธ ์ปจํŠธ๋กค์˜ ์ผ๋ถ€๋กœ ํ•„์š”ํ•œ ๊ฒฝ์šฐ์— ๋Œ€ํ•ด ๊ฒฝ๋Ÿ‰ ์ปจํŠธ๋กค์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • ๋…ผ์˜๋˜์ง€ ์•Š์€ ๋‹ค๋ฅธ ๊ฒƒ์€ ์šฐ๋ฆฌ๊ฐ€ ์—ฌ๋Ÿฌ ์œ ํ˜•์„ ์ด์ƒ์ ์œผ๋กœ ์ง€์›ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Decimal, Integer ๋ฐ ์ž ์žฌ์ ์œผ๋กœ Long, Double ๋“ฑ... ์ด๊ฒƒ์€ ๊ทผ๋ณธ์ ์œผ๋กœ ๋งŽ์€ ๊ฒƒ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์•„์ง ์™„์ „ํžˆ ์ƒ๊ฐํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. .
  • ๊ฐ’์€ ๋ฐ˜๋“œ์‹œ nullable์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์„ค์ •๋˜์ง€ ์•Š์€ ๊ฐ’์€ 0๊ณผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.
  • ์ค‘์š”ํ•˜์ง€ ์•Š์€ ๋˜ ๋‹ค๋ฅธ ์•„์ด๋””์–ด๋Š” decimal, double ๋˜๋Š” float ์œ ํ˜•์— ๋Œ€ํ•ด ์†Œ์ˆ˜ ์ •๋ฐ€๋„๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋” ๋งŽ์€ ์•„์ด๋””์–ด๊ฐ€ ๋’ค๋”ฐ๋ฅผ ๊ฒƒ์ด๋ผ๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์‚ฌ์–‘์„ ์ฝ๊ธฐ๋ฅผ ๊ณ ๋Œ€ํ•ฉ๋‹ˆ๋‹ค!

( @mdtauk , @xyzzer , @mrlacey , @sonnemaf , @robloo , @Felix-Dev , @adrientetar , @ArchieCoder )

๋‚˜๋Š” ๊ฐ๊ฐ์— ๋Œ€ํ•œ API์™€ ์˜ˆ์ œ๋กœ ์ž‘์„ฑ๋œ ์‚ฌ์–‘ / PR ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ๋ฏธ๋ฆฌ ์ •์˜๋œ ์œ ํ˜•(์•„์ง ์ง„ํ–‰ ์ค‘)์— ๋Œ€ํ•œ ์—ด๊ฑฐํ˜•๊ณผ ์„ค์ •๋œ ๊ฒฝ์šฐ ๋ฏธ๋ฆฌ ์ •์˜๋œ ์œ ํ˜•์„ ์žฌ์ •์˜ํ•˜๋Š” ์‚ฌ์šฉ์ž ์ง€์ • ์„œ์‹ ์†์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์–‘์— ๋งž๊ฒŒ ์„œ์‹ ์ง€์ •์„ ์ฒ˜๋ฆฌํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

ํ™•์ธํ•ด ๋ณด์‹œ๊ณ  ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š๊ฑฐ๋‚˜ ์ถ”๊ฐ€ ๋˜๋Š” ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌํ•ญ์ด ์žˆ์œผ๋ฉด ์•Œ๋ ค์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ์š”๊ตฌํ•˜๋Š” ์‚ฌ์–‘์— ๊ธฐ์—ฌํ•˜๋Š” ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ์ˆ˜๋ฝํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

  • ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋Š” ํ•„์ˆ˜ ํ•ญ๋ชฉ์œผ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ๋งˆ์Šคํ‚น ๋ฐ ๊ธฐํƒ€ ์ง€์› ์†์„ฑ์„ ๋ฌด๋ฃŒ๋กœ ์–ป๊ธฐ ์œ„ํ•ด TextBox์—์„œ ํŒŒ์ƒ๋˜๋„๋ก ์ด ์ปจํŠธ๋กค์„ ๊ทœ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

  • @mrlacey ์˜ ์šฐ๋ ค๋กœ ์‚ฌ์šฉ์ž ์ง€์ • ์ˆซ์ž ๋ฌธ์ž์—ด ์ž…๋ ฅ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ํ™œ์„ฑํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ์ž ์ง€์ • ํ˜•์‹ ๋ฌธ์ž์—ด๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์„ ํ–‰ 0 ์ œ๊ฑฐ๋ฅผ ํ™œ์„ฑํ™”/๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” API๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค(๊ตญ์ œ ์ „ํ™” ๋ฒˆํ˜ธ ๋ฐ IP ์ฃผ์†Œ๋Š” ์ด๋ฏธ ๊ฐ€๋Šฅํ•œ ๊ธฐ๋ณธ ํ˜•์‹ ์œ ํ˜• ๋ชฉ๋ก์—์„œ).

  • ์ด๊ฒƒ์€ ๊ณ„์‚ฐ๊ธฐ ์ง€์›์„ ํ™œ์„ฑํ™”/๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ธฐ๋Šฅ๊ณผ ํ•จ๊ป˜ ์ˆซ์ž ๊ฐ’/๋ฌธ์ž์—ด์— ๋Œ€ํ•ด ๊ฒฝ๋Ÿ‰์ผ ์ˆ˜ ์žˆ์ง€๋งŒ ์ถฉ๋ถ„ํ•œ ๊ณ„์‚ฐ ๋ฐ ์‚ฌ์šฉ์ž ์ง€์ • ์ง€์›์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋Š” ์ปจํŠธ๋กค์— ๋Œ€ํ•œ ๊ต์ฐจ์ ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์ œ์˜ ๊ฐ„๊ฒฐํ•จ์ด ์ด๋ฅผ ๊ฐ•์กฐํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ์ด๊ฒƒ์ด ์žฅ๋ž˜ ์ œ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋” ๋ณต์žกํ•˜๊ฒŒ ๋งŒ๋“ค ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋Š” ์‚ฌ๋žŒ์˜ ์˜๊ฒฌ์„ ๋“ฃ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

  • @sonnemaf ์•„์ด์ฝ˜ > ํŒ์—… ๊ณ„์‚ฐ๊ธฐ ์˜ˆ์ œ์˜ ์ฐธ์‹ ํ•จ๊ณผ ์ง๊ด€์„ฑ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋‚˜์—๊ฒŒ ์ด๊ฒƒ์€ CalendarDatePicker์˜ ๊ฐœ๋…์—์„œ ์˜ˆ๋ฅผ ๋“ค์–ด ํŒŒ์ƒ๋˜์—ˆ์œผ๋ฉฐ ์—ฌ๊ธฐ ๋ชจ๋“  ์‚ฌ๋žŒ์ด V1์— ๋Œ€ํ•ด ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฐ•๋ ฅํ•œ ํ‘ธ์‹œ๊ฐ€ ์—†๋Š” ํ•œ V2 ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ํ›Œ๋ฅญํ•œ ๊ณ ๋ ค ์‚ฌํ•ญ์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๊ณ„์‚ฐ๊ธฐ ์˜คํ”ˆ ์†Œ์Šค ๋…ธ๋ ฅ๊ณผ ์กฐ์ •์ด ์žˆ๋Š” ๊ฒฝ์šฐ ํŒ์—… ๊ณ„์‚ฐ๊ธฐ๊ฐ€ ์˜๋ฏธ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณ„์‚ฐ๊ธฐ ํ”Œ๋ผ์ด์•„์›ƒ์˜ ๋ชจ์–‘๊ณผ ๊ทธ ๋’ค์— ์žˆ๋Š” ์—”์ง„์˜ ์ผ๊ด€์„ฑ์„ ์œ„ํ•ด ๋‘˜ ๋‹ค.

์—ฌ๊ธฐ๊ฐ€ ์ด ์ด๋ฏธ์ง€๋ฅผ ๊ฒŒ์‹œํ•˜๋Š” ๊ณณ์ธ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ ์‚ฌ์–‘์„ ์ค€์ˆ˜ํ•˜๋Š” ๋‹ค์–‘ํ•œ ์ƒํƒœ์— ๋Œ€ํ•œ ๋””์ž์ธ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

numberbox proposal
์ด๋ฏธ์ง€๋Š” 200% ์Šค์ผ€์ผ์ž…๋‹ˆ๋‹ค.

@mdtauk ๋ชจํ˜•์˜ ๋ชฉ์ ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๊ฐ ์ด๋ฏธ์ง€๋Š” ์–ด๋–ค ์ƒํƒœ๋ฅผ ๋ณด์—ฌ์ฃผ๋ ค๊ณ  ํ•ฉ๋‹ˆ๊นŒ? ๋‹น์‹ ์ด ์ด๊ฒƒ์„ ๋ช…ํ™•ํžˆ ํ•˜์ง€ ์•Š์œผ๋ฉด ์šฐ๋ฆฌ๋Š” ๋‹น์‹ ๊ณผ ๋‹ค๋ฅธ ๊ฐ€์ •์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ”ฝ์…€ ์™„๋ฒฝํ•œ ์ฐธ์กฐ๋ฅผ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๊นŒ?

์ด๋ฏธ์ง€์—์„œ ํ”Œ๋žซํผ์ด๋‚˜ ๊ธฐ๋ณธ ์ปจํŠธ๋กค์˜ ๊ธฐ๋ณธ๊ฐ’๊ณผ ๋‹ค๋ฅธ ๋ถ€๋ถ„์„ ํ˜ธ์ถœํ•˜์—ฌ ๋ฌด์—‡์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•˜๋Š”์ง€(์žˆ๋Š” ๊ฒฝ์šฐ) ๋ช…ํ™•ํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@mrlacey ๋„์›€์ด ๋œ๋‹ค๋ฉด ๋” ์ž์„ธํžˆ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”? ์‚ฌ์–‘์—์„œ ์–ธ๊ธ‰๋œ ๋ช‡ ๊ฐ€์ง€ ์˜ˆ๋ฅผ ์„ค๋ช…ํ•˜๋ ค๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ ๋ชฉ์ ์€ ์ ‘๋‘์‚ฌ, ์ ‘๋ฏธ์‚ฌ, ๋งˆ์Šคํฌ, ์œ„์•„๋ž˜ ๋ฒ„ํŠผ๊ณผ ๊ฐ™์ด ์ œ์•ˆ๋œ ๋‹ค์–‘ํ•œ ์ปจํŠธ๋กค ์š”์†Œ๋กœ ์ด๋Ÿฌํ•œ ์ปจํŠธ๋กค์ด ์–ด๋–ป๊ฒŒ ๋ณด์ด๋Š”์ง€ ์„ค๋ช…ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. FabricWeb ์ปจํŠธ๋กค ๋””์ž์ธ์—์„œ ์ถ”์ •๋˜์ง€๋งŒ FocusReveal๊ณผ ๊ฐ™์€ XAML ์š”์†Œ์™€ ๋ฒ„ํŠผ์˜ ์ปจํŠธ๋กค ํฌ๊ธฐ ์กฐ์ •์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋Š” ํœด์‹ - ์ง‘์ค‘ - ๋น„ํ™œ์„ฑํ™” ์ƒํƒœ๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

ํŒ์—… ๊ณ„์‚ฐ๊ธฐ๋Š” V2์— ์ข‹์€ ๊ธฐ๋Šฅ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ œ ์˜๊ฒฌ์„ ์–ด๋””์— ์˜ฌ๋ ค์•ผ ํ• ์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ์‚ฌ์–‘์— ๋Œ€ํ•œ PR์„ ์ž‘์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด ์ด ํ˜ธ์— ๊ณ„์† ์ œ ์ƒ๊ฐ์„ ์จ๋„ ๋ฉ๋‹ˆ๊นŒ?

์ •์ˆ˜

NumberBoxFormatType์˜ ์ •์ˆ˜ ๊ฐ’์ด ์œ ์šฉํ•ฉ๋‹ˆ๊นŒ?

enum NumberBoxFormatType
{
    IPAddress,
    InternationalTelephone,
    Currency,
    Integer,
}

์–ธ์–ด

ํ†ตํ™”, ์‹ญ์ง„์ˆ˜ ๊ทธ๋ฃนํ™” ๊ธฐํ˜ธ๋ฅผ ์ง€์ •ํ•˜๋Š” ๋ฐ ์–ธ์–ด ๋ฅผ ์‚ฌ์šฉํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

๋‹ค์Œ ์˜ˆ์—์„œ ์–ธ์–ด๋Š” nl-NL๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ ‘๋‘์–ด๊ฐ€ ์œ ๋กœ ๊ธฐํ˜ธ์ด๊ณ  ์†Œ์ˆ˜์  ๊ธฐํ˜ธ ๋’ค์— 2๊ฐœ์˜ ์†Œ์ˆ˜์ ์ด ์žˆ๋Š” ์‰ผํ‘œ์ด๋ฉฐ ์ˆซ์ž ๊ทธ๋ฃน์ด ์ ์ด๋ผ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๊นŒ? ์Œ์ˆ˜ ํ†ตํ™”๋Š” ๋ฏธ๊ตญ๊ณผ ๊ฐ™์ด ์•ž์— ๋งˆ์ด๋„ˆ์Šค ๊ธฐํ˜ธ๊ฐ€ ์žˆ๊ณ  ๊ด„ํ˜ธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

<TextBlock Header="Price" 
    PlaceholderText="0,00" 
    FormatType="Currency"
    Language="nl-NL" />

Windows์—๋Š” ๋งŽ์€ ์ˆซ์ž ๋ฐ ํ†ตํ™” ํ˜•์‹ ์˜ต์…˜์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด ์ •๋„๋ฉด ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.

image

๊ฐ€์น˜ ์†์„ฑ

Value ์†์„ฑ์ด ํ•„์š”ํ•˜๊ณ  ์–ด๋–ค (์ˆซ์ž) ์œ ํ˜•์ด ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ? ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. double, decimal ๋˜๋Š” int์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. Nullable ์ง€์›(double?, decimal?, int?)์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ์— ์ƒ์†๋œ TextBox ์ปจํŠธ๋กค์˜ Text ์†์„ฑ์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Decimal์— ๋Œ€ํ•œ ์ง€์›๋„ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. double๋กœ๋Š” ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

<TextBlock Header="Price" 
    Value="{x:Bind ViewModel.Employee.Salary, Mode=TwoWay}"
    PlaceholderText="0.00" 
    FormatType="Currency"
    Language="nl-NL" />

์ง์›์˜ Salary ์†์„ฑ์ด Nullable์ธ ๊ฒฝ์šฐ(์†Œ์ˆ˜?). ValueNullableDecimal ์ข…์†์„ฑ ์†์„ฑ์ด ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ? DatePicker ์ปจํŠธ๋กค์˜ SelectedDate๋Š” Nullable์ž…๋‹ˆ๋‹ค.. Nullable์€ ํŠนํžˆ ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ์—์„œ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

<TextBlock Header="Price" 
    ValueNullableDecimal="{x:Bind ViewModel.Employee.Salary, Mode=TwoWay}"
    PlaceholderText="0.00" 
    FormatType="Currency"
    Language="nl-NL" />

MinValue ๋ฐ MaxValue๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ์ด์ œ ์‚ฌ์–‘์—์„œ ์ •์ˆ˜์ด์ง€๋งŒ ์ด๊ฒƒ์€ Double์ด ์•„๋‹ˆ์–ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

@sonnemaf ์‚ฌ์–‘์— ๋”ฐ๋ฅด๋ฉด ์ปจํŠธ๋กค์€ ์ˆซ์ž๋ฅผ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๊ฒƒ์— ๋Œ€ํ•œ ๊ฒƒ์ด๋ฏ€๋กœ "๊ฐ’"์„ ํ…์ŠคํŠธ๋กœ ์ทจ๊ธ‰ํ•˜๊ณ  ํ•„์š”์— ๋”ฐ๋ผ ๋ณ€ํ™˜ํ•˜๋Š” ์†Œ๋น„ ์ฝ”๋“œ์— ์˜์กดํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด์ƒ์ ์ด์ง€๋Š” ์•Š์ง€๋งŒ long ๋˜๋Š” float์ธ Value ์†์„ฑ์ด ์žˆ๋”๋ผ๋„ ์—ฌ์ „ํžˆ ๋ณ€ํ™˜์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.
๋ชจ๋“  ์ˆซ์ž ์œ ํ˜•์— ๋Œ€ํ•œ ์˜ค๋ฒ„๋กœ๋“œ๋ณด๋‹ค ๋‚ซ์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฐ ๋‹ค์Œ US ์šฐํŽธ ๋ฒˆํ˜ธ, ์ „ํ™” ๋ฒˆํ˜ธ ๋˜๋Š” IP ์ฃผ์†Œ์™€ ๊ฐ™์ด "์ˆซ์ž" ์œ ํ˜•์œผ๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์—†๋Š” ์ปจํŠธ๋กค์ด ๋””์ž์ธ๋˜๊ณ  ์žˆ๋Š” ํ•ญ๋ชฉ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ข…๋ฅ˜์˜ ๊ฐ’์˜ ๊ฒฝ์šฐ ํ…์ŠคํŠธ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์ด ์ตœ์ƒ์˜(์œ ์ผํ•œ) ์˜ต์…˜์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
(์ตœ์†Œํ•œ ์ดˆ๊ธฐ ๋ฒ„์ „์—์„œ๋Š” ์ž…๋ ฅ๋œ ๊ฐ’์— ์•ก์„ธ์Šคํ•˜๊ณ  ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋ณ€ํ™˜๊ธฐ์— ์˜์กดํ•˜๋Š” ํ•œ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ๊ฐ„๋‹จํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ดˆ๊ธฐ์— ํˆดํ‚ท์— ์˜ค๋Š” ๋„์šฐ๋ฏธ(๋˜๋Š” ํ•˜์œ„ ํด๋ž˜์Šค) ๋ชจ์Œ์„ ์œ„ํ•œ ์žฅ์†Œ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”ผ๋“œ๋ฐฑ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฉ”์ธ ์ปจํŠธ๋กค์— ํ†ตํ•ฉ๋ฉ๋‹ˆ๋‹ค.

Language ์†์„ฑ์ด ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ? ์ด๊ฒƒ์ด UILocale๊ณผ ๊ฐ™์ง€ ์•Š์€ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์ข‹์€ ์ด์œ ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์ง€๋งŒ ์ด๊ฒƒ์€ ์‚ฌ์šฉ์ž๊ฐ€ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๋ฉฐ(OS ์ˆ˜์ค€์—์„œ) ํŠน์ • ํ˜•์‹์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋ฉด ํ˜•์‹์ด ๋‹ค๋ฅธ ๊ณณ์ด๋‚˜ ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ์ผ์น˜ํ•˜์ง€ ์•Š์„ ๋•Œ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๋” ๋งŽ์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ์›ํ•˜๋Š”. ๋‚ด ๋จธ๋ฆฌ ๊ผญ๋Œ€๊ธฐ์—์„œ: ๋ˆ„๊ตฐ๊ฐ€ ๋‹ค๋ฅธ ํ˜•์‹์˜ ๊ฐ’์„ ๋ถ™์—ฌ๋„ฃ์œผ๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”?

@mdtauk ๋ชจํ˜•์˜ ๋ชฉ์ ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๊ฐ ์ด๋ฏธ์ง€๋Š” ์–ด๋–ค ์ƒํƒœ๋ฅผ ๋ณด์—ฌ์ฃผ๋ ค๊ณ  ํ•ฉ๋‹ˆ๊นŒ? ๋‹น์‹ ์ด ์ด๊ฒƒ์„ ๋ช…ํ™•ํžˆ ํ•˜์ง€ ์•Š์œผ๋ฉด ์šฐ๋ฆฌ๋Š” ๋‹น์‹ ๊ณผ ๋‹ค๋ฅธ ๊ฐ€์ •์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ”ฝ์…€ ์™„๋ฒฝํ•œ ์ฐธ์กฐ๋ฅผ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๊นŒ?

์ด๋ฏธ์ง€์—์„œ ํ”Œ๋žซํผ์ด๋‚˜ ๊ธฐ๋ณธ ์ปจํŠธ๋กค์˜ ๊ธฐ๋ณธ๊ฐ’๊ณผ ๋‹ค๋ฅธ ๋ถ€๋ถ„์„ ํ˜ธ์ถœํ•˜์—ฌ ๋ฌด์—‡์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•˜๋Š”์ง€(์žˆ๋Š” ๊ฒฝ์šฐ) ๋ช…ํ™•ํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@mrlacey ์ด๊ฒƒ์ด ๋‹น์‹ ์ด ์›ํ–ˆ๋˜ ์ข…๋ฅ˜์ž…๋‹ˆ๊นŒ?
numberbox comparison

@mdtauk ๋‹น์‹ ์ด ๋ณด์—ฌ์ฃผ๋ ค๋Š” ๊ฒƒ ์ค‘ ์ผ๋ถ€๋ฅผ ์„ค๋ช…ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์กฐ๊ธˆ ๋” ์ข‹์Šต๋‹ˆ๋‹ค.

๊ทผ๋ณธ์ ์ธ ์งˆ๋ฌธ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹๋‚จ์•„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ๋ณด์—ฌ์ฃผ๋Š” ๋ชฉํ‘œ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๊ทธ๋ƒฅ ์•„์ด๋””์–ด์ธ๊ฐ€์š”? ๋‹ค์–‘ํ•œ ์•„์ด๋””์–ด๋ฅผ ํƒ์ƒ‰ํ•œ ํ›„ ์„ ํ˜ธํ•˜๋Š” ๋ฒ„์ „์ž…๋‹ˆ๊นŒ? ๊ทธ๋ ‡๋‹ค๋ฉด ์™œ ์ด๊ฒƒ์ด ์ตœ๊ณ /์„ ํ˜ธ์ž…๋‹ˆ๊นŒ?

ํ˜„์žฌ ์ปจํŠธ๋กค์„ ์›ํ•˜๋Š” ์ƒˆ ์‹œ์Šคํ…œ ์ „์ฒด ์Šคํƒ€์ผ์— ํ‘œ์‹œํ•  ์ƒˆ ์ปจํŠธ๋กค๊ณผ ๋น„๊ตํ•œ๋‹ค๋Š” ๊ฒƒ์€ ์ปจํŠธ๋กค์— ํŠน์ •ํ•œ ๊ฒƒ์„ ์„ ํ˜ธํ•˜๋Š” ์ƒˆ ์‹œ์Šคํ…œ ์ „์ฒด ์Šคํƒ€์ผ์— ์žˆ๋Š” ๊ฒƒ๊ณผ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ํ…Œ๋‘๋ฆฌ์˜ ํˆฌ๋ช…๋„๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์„ ์–ธ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ๋ชจ๋“  ์ปจํŠธ๋กค์„ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด ์ด ์ปจํŠธ๋กค์—๋งŒ ์ ์šฉ๋˜๋Š” ๊ฒƒ์ž…๋‹ˆ๊นŒ? ๊ทธ๋ฆฌ๊ณ  ์–ด๋Š ์ฃผ์— ์žˆ์Šต๋‹ˆ๊นŒ?

๋ฒ„ํŠผ์— ๋Œ€ํ•ด ๋ช…์‹œ์ ์ธ ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์€ ํฌ๊ธฐ๊ฐ€ ์กฐ์ •๋˜๋Š” ์ปจํ…Œ์ด๋„ˆ์— ๋”ฐ๋ผ ํ•ญ์ƒ ๊ท ๋“ฑํ•˜๊ฒŒ ๋ณ€ํ™˜๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋””์ž์ธ ๊ตฌ์„ฑ ์š”์†Œ์—์„œ ๋ฌธ์ œ๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•ญ์ƒ ์ •์‚ฌ๊ฐํ˜•์ด์–ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ๋˜๋Š” ๋„ˆ๋น„๊ฐ€ ๊ธฐ๋ณธ ์ปจํŠธ๋กค ๋†’์ด์— ๋”ฐ๋ผ ๊ณ ์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๊นŒ?

์ ‘๋‘์‚ฌ์™€ ์ ‘๋ฏธ์‚ฌ์— ๋Œ€ํ•œ ๋ฐฐ๊ฒฝ ๋ธŒ๋Ÿฌ์‹œ๊ฐ€ ์–ด๋–ป๊ฒŒ ๊ฒฐ์ •๋ฉ๋‹ˆ๊นŒ? ๊ธฐ์กด ์‹œ์Šคํ…œ ๋ธŒ๋Ÿฌ์‹œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ง€๋งŒ ์–ด๋–ค ๋ธŒ๋Ÿฌ์‹œ์ธ๊ฐ€์š”?

๋งˆ์Šคํ‚น์€ ์ด ์‚ฌ์–‘์—์„œ ๋‹ค๋ฃจ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. "Masked" ์˜ˆ์ œ๊ฐ€ ํ˜•์‹ ๋ฌธ์ž์—ด๊ณผ ๊ด€๋ จ๋˜๋„๋ก ์˜๋„๋˜์—ˆ์Šต๋‹ˆ๊นŒ?
๋งˆ์Šคํฌ ๋œ ์˜ˆ์ œ๋Š” ํ˜•์‹์— ์–ด๋–ป๊ฒŒ ๋Œ€์‘ํ•ฉ๋‹ˆ๊นŒ?
๋‚˜๋Š” ๋‹น์‹ ์ด ๋ฒ„์ „ 4 IP ์ฃผ์†Œ์˜ ํ•ญ๋ชฉ์„ ๋ณด์—ฌ์ฃผ๋Š” ์˜ˆ๋ผ๊ณ  ๊ฐ€์ •ํ•˜์ง€๋งŒ ๋ชจ๋“  ๊ฒƒ์ด ์–ผ๋งˆ๋‚˜ ๊น”๋”ํ•˜๊ฒŒ ๋งž๋Š”์ง€์— ๋”ฐ๋ผ ๊ฑฐ๊ธฐ์— ๋งŽ์€ ๊ฐ€์ •์ด ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค. ์ž…๋ ฅํ•  ์ˆ˜ ์—†๋Š” ๋ชจ๋“  ๊ฐ’์— ๋ฐฐ๊ฒฝ๊ณผ ์—ฌ๋ฐฑ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ํ•ญ์ƒ ํ‘œ์‹œ๋˜์ง€ ์•Š์œผ๋ฉด ์–ด๋–ป๊ฒŒ ํ•ฉ๋‹ˆ๊นŒ? ๊ท€ํ•˜์˜ ์˜ˆ์™€ ๊ฐ™์ด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๊ณต๊ฐ„์— ๋งž๊ฒŒ ์ฝ˜ํ…์ธ ๋ฅผ ๋Š˜๋ ค์•ผ ํ•ฉ๋‹ˆ๊นŒ? ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ณต๊ฐ„๋ณด๋‹ค ๋„“์€ ์ฝ˜ํ…์ธ ๋ฅผ ํŒจ๋‹ํ•  ๋•Œ ์ž…๋ ฅํ•  ์ˆ˜ ์—†๋Š” ๊ฐ’์— ํ• ๋‹น๋œ ๊ณต๊ฐ„์€ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๊นŒ?

@mdtauk ๋‹น์‹ ์ด ๋ณด์—ฌ์ฃผ๋ ค๋Š” ๊ฒƒ ์ค‘ ์ผ๋ถ€๋ฅผ ์„ค๋ช…ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์กฐ๊ธˆ ๋” ์ข‹์Šต๋‹ˆ๋‹ค.

๊ทผ๋ณธ์ ์ธ ์งˆ๋ฌธ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹๋‚จ์•„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ๋ณด์—ฌ์ฃผ๋Š” ๋ชฉํ‘œ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๊ทธ๋ƒฅ ์•„์ด๋””์–ด์ธ๊ฐ€์š”? ๋‹ค์–‘ํ•œ ์•„์ด๋””์–ด๋ฅผ ํƒ์ƒ‰ํ•œ ํ›„ ์„ ํ˜ธํ•˜๋Š” ๋ฒ„์ „์ž…๋‹ˆ๊นŒ? ๊ทธ๋ ‡๋‹ค๋ฉด ์™œ ์ด๊ฒƒ์ด ์ตœ๊ณ /์„ ํ˜ธ์ž…๋‹ˆ๊นŒ?

ํ˜„์žฌ ์ปจํŠธ๋กค์„ ์›ํ•˜๋Š” ์ƒˆ ์‹œ์Šคํ…œ ์ „์ฒด ์Šคํƒ€์ผ์— ํ‘œ์‹œํ•  ์ƒˆ ์ปจํŠธ๋กค๊ณผ ๋น„๊ตํ•œ๋‹ค๋Š” ๊ฒƒ์€ ์ปจํŠธ๋กค์— ํŠน์ •ํ•œ ๊ฒƒ์„ ์„ ํ˜ธํ•˜๋Š” ์ƒˆ ์‹œ์Šคํ…œ ์ „์ฒด ์Šคํƒ€์ผ์— ์žˆ๋Š” ๊ฒƒ๊ณผ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ํ…Œ๋‘๋ฆฌ์˜ ํˆฌ๋ช…๋„๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์„ ์–ธ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ๋ชจ๋“  ์ปจํŠธ๋กค์„ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด ์ด ์ปจํŠธ๋กค์—๋งŒ ์ ์šฉ๋˜๋Š” ๊ฒƒ์ž…๋‹ˆ๊นŒ? ๊ทธ๋ฆฌ๊ณ  ์–ด๋Š ์ฃผ์— ์žˆ์Šต๋‹ˆ๊นŒ?

NumberBox ์‚ฌ์–‘์—๋Š” ์‹œ๊ฐ์  ์˜ˆ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฉฐ ์›๋ณธ ์ œ์•ˆ์„œ์˜ ์ด๋ฏธ์ง€๋Š” ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ๋Œ€๋žต์ ์ธ ์˜ˆ์ž…๋‹ˆ๋‹ค. ์ปจํŠธ๋กค ํ…œํ”Œ๋ฆฟ์ด 2epx์˜ CornerRadius ๊ฐ’์œผ๋กœ ์—…๋ฐ์ดํŠธ๋˜๋Š” ๋˜ ๋‹ค๋ฅธ PR #524๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” Fabric Web์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•œ ๋ฐ˜์˜ฌ๋ฆผ์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ TextBox ํŒŒ์ƒ ์ปจํŠธ๋กค๋„ ์œ ์‚ฌํ•˜๊ฒŒ ์—…๋ฐ์ดํŠธ๋  ๊ฒƒ์ด๋ผ๊ณ  ๊ฐ€์ •ํ•˜๊ณ  ์ด๋ฅผ NumberBox์˜ ์ œ์•ˆ๋œ ๊ธฐ๋Šฅ์ด ์—ฌ๊ธฐ์— ์–ด๋–ป๊ฒŒ ๋งž์ถœ ์ˆ˜ ์žˆ๋Š”์ง€ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•œ ์ง€์นจ์œผ๋กœ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. Fabric ์›น ํ…์ŠคํŠธ ํ•„๋“œ๋Š” ์ด๋ฏธ Prefix ๋ฐ Suffix ๊ฐ’์„ ์ง€์›ํ•˜๋ฏ€๋กœ ํ•ด๋‹น ๋””์ž์ธ์„ ์„ ํƒํ•˜๊ณ  XAML ๋ฉ”ํŠธ๋ฆญ์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

image

๋ฒ„ํŠผ์— ๋Œ€ํ•ด ๋ช…์‹œ์ ์ธ ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์€ ํฌ๊ธฐ๊ฐ€ ์กฐ์ •๋˜๋Š” ์ปจํ…Œ์ด๋„ˆ์— ๋”ฐ๋ผ ํ•ญ์ƒ ๊ท ๋“ฑํ•˜๊ฒŒ ๋ณ€ํ™˜๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋””์ž์ธ ๊ตฌ์„ฑ ์š”์†Œ์—์„œ ๋ฌธ์ œ๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•ญ์ƒ ์ •์‚ฌ๊ฐํ˜•์ด์–ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ๋˜๋Š” ๋„ˆ๋น„๊ฐ€ ๊ธฐ๋ณธ ์ปจํŠธ๋กค ๋†’์ด์— ๋”ฐ๋ผ ๊ณ ์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๊นŒ?

ํ˜„์žฌ TextBox์—๋Š” SearchBox, Password Reveal ๋ฒ„ํŠผ ๋ฐ Clear Text ๋ฒ„ํŠผ๊ณผ ๊ฐ™์€ ํ†ตํ•ฉ ๋ฒ„ํŠผ์ด ์žˆ์Šต๋‹ˆ๋‹ค. XAML์šฉ ํ„ฐ์น˜ ๋Œ€์ƒ์€ ๋ฒ„ํŠผ์„ 32 x 32 epx๋กœ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค. ์ €๋Š” ๋ฒ„ํŠผ์„ ์ •์‚ฌ๊ฐํ˜•์œผ๋กœ ์œ ์ง€ํ•˜๊ณ  ํ•ด๋‹น ์ง€์นจ์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

์ ‘๋‘์‚ฌ์™€ ์ ‘๋ฏธ์‚ฌ์— ๋Œ€ํ•œ ๋ฐฐ๊ฒฝ ๋ธŒ๋Ÿฌ์‹œ๊ฐ€ ์–ด๋–ป๊ฒŒ ๊ฒฐ์ •๋ฉ๋‹ˆ๊นŒ? ๊ธฐ์กด ์‹œ์Šคํ…œ ๋ธŒ๋Ÿฌ์‹œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ง€๋งŒ ์–ด๋–ค ๋ธŒ๋Ÿฌ์‹œ์ธ๊ฐ€์š”?

๋‚ด ์˜ˆ์—์„œ๋Š” ํ…Œ๋งˆ ์ „๊ฒฝ์ƒ‰์„ ์‚ฌ์šฉํ–ˆ์ง€๋งŒ ๋ถˆํˆฌ๋ช…๋„๋Š” 15%๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. FabricWeb์€ 10%์— ๊ฐ€๊น๊ณ  XAML ๋ฒ„ํŠผ์€ 20%๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
ListLowBrush์™€ ๊ฐ™์€ ์œ ์‚ฌํ•œ ๋ธŒ๋Ÿฌ์‹œ ๊ฐ’์ด ์žˆ์ง€๋งŒ ์ƒˆ TextBoxAppendixBackground ๋ธŒ๋Ÿฌ์‹œ๊ฐ€ ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ…์ŠคํŠธ ์ „๊ฒฝ์€ ๋™์ผํ•œ PlaceholderTextForeground ๋ธŒ๋Ÿฌ์‹œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋งˆ์Šคํ‚น์€ ์ด ์‚ฌ์–‘์—์„œ ๋‹ค๋ฃจ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. "Masked" ์˜ˆ์ œ๊ฐ€ ํ˜•์‹ ๋ฌธ์ž์—ด๊ณผ ๊ด€๋ จ๋˜๋„๋ก ์˜๋„๋˜์—ˆ์Šต๋‹ˆ๊นŒ?
๋งˆ์Šคํฌ ๋œ ์˜ˆ์ œ๋Š” ํ˜•์‹์— ์–ด๋–ป๊ฒŒ ๋Œ€์‘ํ•ฉ๋‹ˆ๊นŒ?
๋‚˜๋Š” ๋‹น์‹ ์ด ๋ฒ„์ „ 4 IP ์ฃผ์†Œ์˜ ํ•ญ๋ชฉ์„ ๋ณด์—ฌ์ฃผ๋Š” ์˜ˆ๋ผ๊ณ  ๊ฐ€์ •ํ•˜์ง€๋งŒ ๋ชจ๋“  ๊ฒƒ์ด ์–ผ๋งˆ๋‚˜ ๊น”๋”ํ•˜๊ฒŒ ๋งž๋Š”์ง€์— ๋”ฐ๋ผ ๊ฑฐ๊ธฐ์— ๋งŽ์€ ๊ฐ€์ •์ด ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค. ์ž…๋ ฅํ•  ์ˆ˜ ์—†๋Š” ๋ชจ๋“  ๊ฐ’์— ๋ฐฐ๊ฒฝ๊ณผ ์—ฌ๋ฐฑ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ํ•ญ์ƒ ํ‘œ์‹œ๋˜์ง€ ์•Š์œผ๋ฉด ์–ด๋–ป๊ฒŒ ํ•ฉ๋‹ˆ๊นŒ? ๊ท€ํ•˜์˜ ์˜ˆ์™€ ๊ฐ™์ด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๊ณต๊ฐ„์— ๋งž๊ฒŒ ์ฝ˜ํ…์ธ ๋ฅผ ๋Š˜๋ ค์•ผ ํ•ฉ๋‹ˆ๊นŒ? ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ณต๊ฐ„๋ณด๋‹ค ๋„“์€ ์ฝ˜ํ…์ธ ๋ฅผ ํŒจ๋‹ํ•  ๋•Œ ์ž…๋ ฅํ•  ์ˆ˜ ์—†๋Š” ๊ฐ’์— ํ• ๋‹น๋œ ๊ณต๊ฐ„์€ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๊นŒ?

๋‚˜๋Š” ์ด๊ฒƒ์— ๋Œ€ํ•œ ๋ชจ๋“  ๋‹ต์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ฒ™ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ฉฐ, ๊ทธ๊ฒƒ์ด ์ปจํŠธ๋กค์— ์–ด๋–ป๊ฒŒ ๊ฐ€์‹œ์ ์œผ๋กœ ํ‘œ์‹œ๋˜๋Š”์ง€๋Š” ์ปจํŠธ๋กค์—์„œ ๋งˆ์Šคํฌ ์„œ์‹์ด ๊ตฌํ˜„๋˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ท€๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

IP v4 ์ฃผ์†Œ๋Š” ์‚ฌ์–‘์— ๋‚˜์™€ ์žˆ๋Š” ์˜ˆ์ œ๋กœ ์‚ฌ์šฉํ–ˆ์œผ๋ฉฐ ์›๋ž˜ ์˜๋„๋Š” ์ œ์•ˆ๋œ ๋‚ด์šฉ์„ ์„ค๋ช…ํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค(์ ‘๋‘์‚ฌ ๋ฐ ์ ‘๋ฏธ์‚ฌ ์˜ˆ์ œ๊ฐ€ ๋ถ€์กฑํ•˜์—ฌ ๋‹ค๋ฅธ ๊ฐ’์„ ์„ ํƒํ–ˆ์ง€๋งŒ).

๋‹ค๋ฅธ ์ปจํŠธ๋กค์ด ๋งˆ์Šคํ‚น์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ณด๊ณ  ์ผ๋ถ€๋Š” ๊ฐ’์ด ์ž…๋ ฅ๋  ๋•Œ ์บ๋Ÿฟ์„ ์ด๋™ํ•˜๋Š” ์ธ๋ผ์ธ ํ…์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์€ ์ „ํ™”๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•  ๋•Œ ๋Œ€๊ด„ํ˜ธ์™€ ํ•˜์ดํ”ˆ๊ณผ ๊ฐ™์ด ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ถ€๋Š” ํƒญ ๋˜๋Š” ํ™”์‚ดํ‘œ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ธ๊ทธ๋จผํŠธ ์‚ฌ์ด๋ฅผ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์Œ์— ๋– ์˜ค๋ฅด๋Š” ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด Microsoft์˜ ์˜ˆ๋Š” Windows ์„ค์น˜ ์ค‘์— ์ œํ’ˆ ํ‚ค๋ฅผ ์ž…๋ ฅํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ถ”๊ฐ€๋œ ์š”์†Œ์™€ ๋™์ผํ•œ ์Šคํƒ€์ผ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋ฏธ์  ๊ฐ๊ฐ์— ๋งž์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์ง€๋งŒ, ์ด๊ฒƒ์ด ๋ชจ๋“  ๊ฒƒ์„ ๋งž์ถ”๊ธฐ ์œ„ํ•ด ์ปจํŠธ๋กค์˜ ๊ธธ์ด๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์ธ๋ผ์ธ์ด ๊ณต๊ฐ„์„ ๋” ์ž˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

image

image

image

์ง€๊ธˆ TextBox๋กœ ์ž‘์—…ํ•  ๋•Œ ์ฐธ๊ณ  ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. https://doc.qt.io ์™€ ์œ ์‚ฌํ•˜๊ฒŒ ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐ’์„ ๋ณ€๊ฒฝํ–ˆ์Œ์„ ์•Œ๋ฆฌ๋Š” ๋‹จ์ผ ์ด๋ฒคํŠธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค(์ฆ‰, ํฌ์ปค์Šค๋ฅผ ์žƒ์€ ๊ฒƒ๊ณผ ๋ฆฌํ„ด ํ‚ค๋ฅผ ๋ˆŒ๋ €์„ ๋•Œ์˜ ํ•ฉ์ง‘ํ•ฉ).

@adrientetar NumberBox๋Š” ๋ชจ๋“  ์ž…๋ ฅ์ด ์ˆซ์ž๋กœ ๊ณ„์‚ฐ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฆ„์œผ๋กœ ๊ดœ์ฐฎ์•„ ๋ณด์ž…๋‹ˆ๋‹ค. IP ์ฃผ์†Œ์—๋Š” ์ „ํ™”๋ฒˆํ˜ธ, ํ†ตํ™”, ์ธก์ •์น˜ ๋“ฑ 4๊ฐœ์˜ ์ˆซ์ž๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

DigitBox, NumeralBox ๋“ฑ์€ ๋ชจ๋‘ Microsoft ๋ช…๋ช… ์Šคํƒ€์ผ์— ๋งž์ง€ ์•Š๋Š” ๋ณ€ํ˜•์ž…๋‹ˆ๋‹ค.

๊ฐ’์€ ๋ณธ์งˆ์ ์œผ๋กœ ์ˆซ์ž์ผ ํ•„์š”๊ฐ€ ์—†์œผ๋ฏ€๋กœ ValueBox๋„ ์•ฝ๊ฐ„ ์˜คํ•ด์˜ ์†Œ์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

@sonnemaf ๋ฐ @mdtauk , ๋‚˜๋Š” ๋‚ด์žฅ ๊ณ„์‚ฐ๊ธฐ ์•„์ด๋””์–ด์— ๋Œ€ํ•ด ํŒ€๊ณผ ์ด์•ผ๊ธฐํ–ˆ์œผ๋ฉฐ ์š”์ปจ๋Œ€ ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค. ๊ณผ์žฅ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์—ฌ๋Ÿฌ๋ถ„ ๋ชจ๋‘๊ฐ€ ์šฐ๋ฆฌ๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์ปจํŠธ๋กค์˜ ํ’ˆ์งˆ๊ณผ ์ฐฝ์˜์„ฑ์„ ์ด๋ฏธ ์–ด๋–ป๊ฒŒ ํ–ฅ์ƒ์‹œ์ผฐ๋Š”์ง€์— ๋Œ€ํ•ด ๋”ํ•  ๋‚˜์œ„ ์—†์ด ๊ธฐ์ฉ๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด ๋‹น์‹ ์˜ ๋„์›€์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์˜ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ํ†ตํ•ด ๋‚˜์˜ค๋Š” ์ˆ˜๋งŽ์€ ๋ฉ‹์ง„ ์•„์ด๋””์–ด๋ฅผ ํŒŒ์•…ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์•„์ด๋””์–ด ์ค‘์‹ฌ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์‹œ๋‚˜๋ฆฌ์˜ค ์ค‘์‹ฌ์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. (์ด ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ท€ํ•˜์˜ ๊ธฐ๋Šฅ ์š”์ฒญ์ด ์šฐ๋ฆฌ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์ „์ฒด์—์„œ ๊ตฌ์ฒด์ ์ธ ์˜ํ–ฅ๋ ฅ์„ ๋ฐœํœ˜ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค.)

๊ฐœ๋ฐœ ์ค‘์ธ ์•ฑ์— ๋‚ด์žฅํ˜• ๊ณ„์‚ฐ๊ธฐ์— ๋Œ€ํ•œ ์‹ค์ œ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์ปจํ…์ŠคํŠธ, ์Šคํฌ๋ฆฐ์ƒท, ์‚ฌ์šฉ์ž ํ”„๋กœํ•„์ด ๋ชจ๋‘ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. (์„ธ๋ถ€ ์‚ฌํ•ญ์„ ๊ธฐ๋ฐ€๋กœ ์œ ์ง€ํ•˜๋ ค๋ฉด ๋‚ด ์ด๋ฉ”์ผ๋„ ๋‚ด GitHub ํ”„๋กœํ•„์— ์žˆ์Šต๋‹ˆ๋‹ค.) @xyzzer , @mrlacey , @robloo , @Felix-Dev, @adrientetar ๋ฐ @ArchieCoder , ์ด ๊ธฐ๋Šฅ์ด ์žˆ์œผ๋ฉด ์‚ฌ์šฉ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ๊ณต์œ ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์—๊ฒŒ๋„ ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋‹จ๊ณ„๋ฅผ ๋„˜์–ด ์ด ๊ธฐ๋Šฅ์— ๋ณ‘๋ชฉ ํ˜„์ƒ์„ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ๊ฒƒ์€ ๊ณ„์‚ฐ๊ธฐ ์•ฑ์˜ ์—”์ง„์œผ๋กœ WinUI์˜ DLL ํฌ๊ธฐ๋ฅผ ๋ถ€ํ’€๋ฆด ์œ„ํ—˜์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํƒ€๋‹น์„ฑ์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๋ณ‘ํ–‰ํ•˜์—ฌ ๊ฒ€ํ† ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด์ „์— ์ด ์ปจํŠธ๋กค์„ ๋‹จ์ˆœํ•œ ์ˆซ์ž ์œ ํ˜• ์ด์ƒ์œผ๋กœ ์ทจ๊ธ‰ ์ œ๊ธฐํ–ˆ์Šต๋‹ˆ๋‹ค .

์ˆซ์ž์™€ ์ผ๋ จ์˜ ์ˆซ์ž๋ฅผ ํฌํ•จํ•˜๋Š” ๋ฌธ์ž์—ด ์‚ฌ์ด์—๋Š” ๊ทผ๋ณธ์ ์ธ ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์‚ฌ์–‘์˜ ์ฒซ ๋ฒˆ์งธ ์ดˆ์•ˆ์ด ๊ฒŒ์‹œ๋˜๊ธฐ ์ „์ด์—ˆ์œผ๋ฏ€๋กœ ์ด ์ปจํŠธ๋กค์ด "์ „ํ†ต์ ์ธ ์ˆซ์ž ๊ฐ’"๊ณผ "์ˆซ์ž ์ˆซ์ž๋ฅผ ํฌํ•จํ•˜๋Š” ๋ฌธ์ž์—ด"์„ ๋ชจ๋‘ ์ฒ˜๋ฆฌํ•˜๋„๋ก ๊ณ ๋ คํ•˜๊ณ  ๊ฒฐ์ •ํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์•„๋ฌด๋„ IPv4 ์ฃผ์†Œ๊ฐ€ ํ˜•์‹ํ™”๋œ ์ˆซ์ž ์‹œํ€€์Šค๋ณด๋‹ค ์ผ๋ฐ˜์ ์œผ๋กœ ํ‘œํ˜„๋˜์ง€ ์•Š๋Š” ๋‹ค๋ฅธ ์ •์˜์— ์˜ํ•ด "์ˆซ์ž"์˜€๋‹ค๊ณ  ์ฃผ์žฅํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜๊ณ  ์ฃผ์žฅํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ๋Š” 4๋ฐ”์ดํŠธ ๊ฐ’์— ๋ถˆ๊ณผํ•ฉ๋‹ˆ๋‹ค.

@SavoySchuler

  • ๋น„์šฉ ์ž…๋ ฅ - ์ผ๋ถ€ ํ•ญ๋ชฉ์€ ๊ฐœ์ธ์šฉ์ด๊ณ  ๋‹ค๋ฅธ ํ•ญ๋ชฉ์€ ์ž‘์—…์˜ ์ผ๋ถ€์ธ ์˜์ˆ˜์ฆ์—์„œ ํ•ด๋‹น ํ•ญ๋ชฉ์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
  • ์ฒญ๊ตฌ์„œ๋ฅผ ๋ถ„ํ• ํ•  ๋•Œ ๋ ˆ์Šคํ† ๋ž‘ ์•ฑ, ๋˜๋Š” ํŒ ๊ณ„์‚ฐ?
  • 16์ง„์ˆ˜ ํŽธ์ง‘ ์•ฑ, ์„ ํƒ ํ•ญ๋ชฉ์„ ์ด๋™ํ•  ์˜คํ”„์…‹ ๊ฐ’์„ ๊ณ„์‚ฐํ•˜๋ ค๋ฉด?

IP ์ฃผ์†Œ๋ฅผ ์ง€์›ํ•˜๋Š” ์ปจํŠธ๋กค์ด ์žˆ์œผ๋ฉด ํ”Œ๋žซํผ์— ํฐ ๋„์›€์ด ๋  ๊ฒƒ์ด์ง€๋งŒ NumberBox๊ฐ€ ์ด ์‹œ๋‚˜๋ฆฌ์˜ค์— ์ ํ•ฉํ•œ ์ปจํŠธ๋กค์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์•ž์—์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด NumberBox ์ปจํŠธ๋กค์€ ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  • ๋ฌผ๋ฆฌ์  ํ‚ค๋ณด๋“œ๊ฐ€ ์—†๋Š” ์žฅ์น˜์—์„œ ์‚ฌ์šฉํ•  ๋•Œ Number ๊ฐ€์ƒ ํ‚ค๋ณด๋“œ ์‚ฌ์šฉ
  • 2๊ฐœ์˜ ๋ฒ„ํŠผ์ด ์žˆ์Šต๋‹ˆ๋‹ค -/+
  • ๊ณ„์‚ฐ๊ธฐ๋กœ ํŒ์—…์„ ํ‘œ์‹œํ•˜๊ฑฐ๋‚˜ ์‚ฌ์šฉ์ž๊ฐ€ ๊ธฐ๋ณธ ์‚ฐ์ˆ  ์—ฐ์‚ฐ์„ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ ์ค‘ ์–ด๋Š ๊ฒƒ๋„ IP ์ฃผ์†Œ์™€ ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค. ์ปจํŠธ๋กค์˜ ๋””์ž์ธ์กฐ์ฐจ๋„ ๋งค์šฐ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

๋˜ํ•œ IPv4 ์ฃผ์†Œ๋ฅผ ์ง€์›ํ•˜๋Š” ๊ฒฝ์šฐ ์ˆซ์ž๊ฐ€ ์•„๋‹Œ 16์ง„์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ IPv6 ์ฃผ์†Œ๋„ ์ง€์›ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด ์ปจํŠธ๋กค์— IP ์ฃผ์†Œ ์ง€์›์„ ํฌํ•จํ•˜์ง€ ์•Š๊ณ  UWP์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด MaskedTextBox ์ปจํŠธ๋กค(IPv4, IPv6, ์ „ํ™” ๋ฒˆํ˜ธ, ์šฐํŽธ ๋ฒˆํ˜ธ, SSN ๋“ฑ ์ง€์›)์„ ์ž‘์—…ํ•˜๋Š” ๊ฒƒ์ด ๋” ํ•ฉ๋ฆฌ์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค TextBoxMask ๋ฅผ ๋Œ€์ฒด/๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•œ ํ’๋ถ€ํ•œ UI(@mdtauk๊ฐ€ ์‹œ์—ฐ)๋กœ

IP ์ฃผ์†Œ๋ฅผ ์ง€์›ํ•˜๋Š” ์ปจํŠธ๋กค์ด ์žˆ์œผ๋ฉด ํ”Œ๋žซํผ์— ํฐ ๋„์›€์ด ๋  ๊ฒƒ์ด์ง€๋งŒ NumberBox๊ฐ€ ์ด ์‹œ๋‚˜๋ฆฌ์˜ค์— ์ ํ•ฉํ•œ ์ปจํŠธ๋กค์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์•ž์—์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด NumberBox ์ปจํŠธ๋กค์€ ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  • ๋ฌผ๋ฆฌ์  ํ‚ค๋ณด๋“œ๊ฐ€ ์—†๋Š” ์žฅ์น˜์—์„œ ์‚ฌ์šฉํ•  ๋•Œ Number ๊ฐ€์ƒ ํ‚ค๋ณด๋“œ ์‚ฌ์šฉ
  • 2๊ฐœ์˜ ๋ฒ„ํŠผ์ด ์žˆ์Šต๋‹ˆ๋‹ค -/+
  • ๊ณ„์‚ฐ๊ธฐ๋กœ ํŒ์—…์„ ํ‘œ์‹œํ•˜๊ฑฐ๋‚˜ ์‚ฌ์šฉ์ž๊ฐ€ ๊ธฐ๋ณธ ์‚ฐ์ˆ  ์—ฐ์‚ฐ์„ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ ์ค‘ ์–ด๋Š ๊ฒƒ๋„ IP ์ฃผ์†Œ์™€ ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค. ์ปจํŠธ๋กค์˜ ๋””์ž์ธ์กฐ์ฐจ๋„ ๋งค์šฐ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

๋˜ํ•œ IPv4 ์ฃผ์†Œ๋ฅผ ์ง€์›ํ•˜๋Š” ๊ฒฝ์šฐ ์ˆซ์ž๊ฐ€ ์•„๋‹Œ 16์ง„์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ IPv6 ์ฃผ์†Œ๋„ ์ง€์›ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด ์ปจํŠธ๋กค์— IP ์ฃผ์†Œ ์ง€์›์„ ํฌํ•จํ•˜์ง€ ์•Š๊ณ  ๋Œ€์‹  UWP์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด MaskedTextBox ์ปจํŠธ๋กค(IPv4, IPv6, ์ „ํ™” ๋ฒˆํ˜ธ, ์šฐํŽธ ๋ฒˆํ˜ธ, SSN ๋“ฑ ์ง€์›)์„ ์ž‘์—…ํ•˜๋Š” ๊ฒƒ์ด ๋” ํ•ฉ๋ฆฌ์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค TextBoxMask ๋Œ€์ฒด/๊ฐœ์„ 

@rudyhuyn ๋‚˜๋Š” ๋‹น์‹ ์ด ์—ฌ๊ธฐ์—์„œ ๋งํ•œ ๊ฒƒ์— ๋Œ€๋ถ€๋ถ„ ๋™์˜ํ•˜๋ฉฐ ์ œ ์ผ๋Ÿฌ์ŠคํŠธ๋ ˆ์ด์…˜์€ ์ œ์•ˆ๋œ ์‚ฌ์–‘์„ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด Masked Text Box๋Š” ์ˆซ์ž์—๋งŒ ๊ตญํ•œ๋˜์ง€ ์•Š๊ณ  ๋ฌธ์ž์—ด๋„ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Microsoft ์ œํ’ˆ ํ‚ค ์ƒ์ž๋Š” 5๊ฐœ ์„ธํŠธ์˜ 0-9 AZ ๋ฌธ์ž๊ฐ€ ํ—ˆ์šฉ๋˜๋Š” ์ข‹์€ ์˜ˆ์ž…๋‹ˆ๋‹ค.

Masking์ด ๋ถ„๋ฆฌ๋˜๋”๋ผ๋„ ์—ฌ์ „ํžˆ NumberBox ์ปจํŠธ๋กค์— PrefixText ๋ฐ SuffixText ์†์„ฑ์„ ํฌํ•จํ•˜๋Š” ์ข‹์€ ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํ†ตํ™”, ์ธก์ •, ๋ชจ๋‘ ์ผ์ข…์˜ ์ปจํ…์ŠคํŠธ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

ํšŒ์ „ ๋ฒ„ํŠผ์€ ์ˆœ์ „ํžˆ ๊ฐ’์„ ์ฆ๊ฐ€ ๋ฐ ๊ฐ์†Œ์‹œํ‚ค๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด๋ฏ€๋กœ ์ด๋Ÿฌํ•œ ๊ฐ’๋„ NumberBox ์ปจํŠธ๋กค์˜ ๋ฒ”์œ„ ๋‚ด์— ์žˆ์Šต๋‹ˆ๋‹ค.

์ ‘๋‘์‚ฌ ๋ฐ ์ ‘๋ฏธ์‚ฌ๋Š” TextBox ์ปจํŠธ๋กค ์ž์ฒด์˜ ์†์„ฑ์ด ๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋‹ค๋ฅธ ์ปจํŠธ๋กค์—์„œ ์ƒ์†๋ฉ๋‹ˆ๋‹ค. (์ทจ์•ฝ์ ์„ ์—ฌ๋Š” ๊ฒฝ์šฐ PasswordBox์— ๋Œ€ํ•œ ์˜ˆ์™ธ๊ฐ€ ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.)

๊ณตํ†ต ๊ฐ’์˜ ๋งˆ์Šคํฌ๋Š” ์ด ๋ถ„๋ฆฌ๋œ ์ปจํŠธ๋กค์— ๋Œ€ํ•œ ์—ด๊ฑฐํ˜•(CustomFormatMask์™€ ํ•จ๊ป˜)์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋งˆ์Šคํฌ ์ค‘ ์ผ๋ถ€๋Š” ์˜๊ตญ ์šฐํŽธ๋ฒˆํ˜ธ๊ฐ€ ์˜์ˆซ์ž์ด๊ณ  ์˜๊ตญ ๊ตญ๋ฏผ ๋ณดํ—˜ ๋ฒˆํ˜ธ๊ฐ€ ํŠน์ˆ˜ ํ˜•์‹์„ ๋”ฐ๋ฅด๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ๋ฌธํ™” ์ปจํ…์ŠคํŠธ๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

SW1A 2AA

์˜๊ตญ ์šฐํŽธ๋ฒˆํ˜ธ ์˜ˆ(No. 10 Downing Street์šฉ)

๋‹ต์žฅ์„ ๋ณด๋‚ด๊ธฐ ์ „์— ์˜ค๋Š˜ ์•„์นจ์— ํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กœ๊ณ ์นจํ•˜์ง€ ๋ชปํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค... ์ด ์ œ์•ˆ์„ ์™„์ „ํžˆ ์ƒˆ๋กœ์šด ์ฐจ์›์œผ๋กœ ๋Œ์–ด ์˜ฌ๋ฆฐ ๋ชจ๋“  ๋ก์Šคํƒ€ ์—๊ฒŒ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! GitHub์—์„œ ๋‹จ์–ด๊ฐ€ ๋‚จ์šฉ๋œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ์ง„์‹ฌ์ž…๋‹ˆ๋‹ค!

@mdtauk - ๋‹น์‹ ์˜ ๋ชฉ์—…์€ ํ™˜์ƒ์ ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ์•„์ง ์ด ์ปจํŠธ๋กค์— ๋Œ€ํ•œ ํ”„๋กœํ† ํƒ€์ž… ๋””์ž์ธ์˜ ์ดˆ์•ˆ์„ ์ž‘์„ฑํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋ชจํ˜•์„ ๋ถ„ํ•ดํ•˜์—ฌ ๋””์ž์ด๋„ˆ๊ฐ€ ํŒ”๋ ˆํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ํ”„๋กœํ† ํƒ€์ž…์œผ๋กœ ์‚ฌ์–‘์— ์ถ”๊ฐ€ํ•ด๋„ ๋ ๊นŒ์š”? ์˜ค๋Š˜ ์—ฐ๋ฝํ•˜์—ฌ ๋””์ž์ด๋„ˆ๋ฅผ ์š”์ฒญํ•˜๊ณ  ์—ฌ๊ธฐ์—์„œ @mrlacey ๋กœ ๊ท€ํ•˜์˜ ์Šค๋ ˆ๋“œ์— ํšŒ์‹ ํ•  ์ˆ˜

@sonnemaf , ๋‹ค์‹œ ํ•œ ๋ฒˆ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ๊ท€ํ•˜์˜ ์˜๊ฒฌ์„ ๋ณต์‚ฌํ•˜์—ฌ ์—ฌ๊ธฐ Pull Request์˜ ๋Œ€ํ™” ํƒญ ์— ๋‹ค์‹œ ๊ฒŒ์‹œํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ์—”์ง€๋‹ˆ์–ด๋ง ํŒ€์ด API ๋ฐ ๊ตฌํ˜„ ์ˆ˜์ค€์— ์ฐธ์—ฌํ•˜๊ธฐ ์‹œ์ž‘ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํฌ๊ด„์ ์ธ ๋‹ต๋ณ€์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๊ธฐ์—์„œ ๊ฐ€์ด๋“œ๋ผ์ธ๊ณผ ๋ฌธ์„œ์˜ ์ดˆ์•ˆ์„ ์ž‘์„ฑํ•˜๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ „์ž์˜ ๊ฒฝ์šฐ [DEV], ํ›„์ž์˜ ๊ฒฝ์šฐ [PM]์œผ๋กœ ์ปค๋ฐ‹์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์ด๊ฒƒ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹๋†’์€ ์ˆ˜์ค€์˜ ์š”๊ตฌ ์‚ฌํ•ญ ํ† ๋ก ์„ ์œ„ํ•œ ์˜ฌ๋ฐ”๋ฅธ ํฌ๋Ÿผ์ž…๋‹ˆ๋‹ค(์˜ˆ: ๋‚ด์žฅ ๊ณ„์‚ฐ๊ธฐ ๋ฐ @mdtauk ์˜ ๋ชจํ˜•).

@mdtauk : ๋‚˜๋Š” ๋‹น์‹ ์˜ ๋ง์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์ ‘๋‘์‚ฌ/์ ‘๋ฏธ์‚ฌ๋Š” TextBox ์ข‹์€ ์ถ”๊ฐ€๊ฐ€ ๋  ๊ฒƒ์ด๋ฉฐ ์ˆซ์ž์— ๊ตญํ•œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ช‡ ๊ฐ€์ง€ ์˜ˆ:

  • ๋„๋ฉ”์ธ์ด ํ•ญ์ƒ ๋™์ผํ•œ ๊ฒฝ์šฐ(์˜ˆ: @microsoft.com) ์ง์›์—๊ฒŒ ์ด๋ฉ”์ผ ์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•˜๋„๋ก ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.
  • ํ•ญ์ƒ W- ์‹œ์ž‘ํ•  ๋•Œ ์–‘์‹์˜ ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜์‹ญ์‹œ์˜ค

๋“ฑ...

ํ† ๋ก ์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋‹ค๋ฅธ ํ‹ฐ์ผ“์„ ์—ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค!

@rudyhuyn IP ์ฃผ์†Œ ๊ฐ™์€ ๊ฒƒ์€ ์ง€์›ํ•˜์ง€ ์•Š์ง€๋งŒ ์ „ํ™”๋ฒˆํ˜ธ๋‚˜ ์šฐํŽธ๋ฒˆํ˜ธ๋Š” ์ง€์›ํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๊ฒƒ์œผ๋กœ ๋ณด์‹ญ๋‹ˆ๊นŒ?
์ œ ์ƒ๊ฐ์—๋Š” ์–ด๋–ค ๊ฒƒ์€ ์ œํ•œํ•˜๊ธฐ ์‹œ์ž‘ํ•˜๊ณ  ๋‹ค๋ฅธ ๊ฒƒ์€ ์ œํ•œํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์ ์šฉ ๋Œ€์ƒ์— ๋Œ€ํ•œ ๊ทœ์น™์ด ๋งค์šฐ ๋ช…ํ™•ํ•˜๊ฒŒ ์ •์˜๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์ •์ˆ˜, ๋ถ€๋™ ์†Œ์ˆ˜์  ๋“ฑ์œผ๋กœ ํ‘œ์‹œ๋  ์ˆ˜ ์žˆ๋Š” ๊ฐ’์„ ์ง€์›ํ•˜๋ฉด ์ƒํ™ฉ์ด ๋งค์šฐ ๋ช…ํ™•ํ•ด์ง€๋ฉฐ ์—ฌ์ „ํžˆ ๋งŽ์€ ๊ฐ€์น˜๋ฅผ ์ œ๊ณตํ•˜๋Š” ์ปจํŠธ๋กค์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

@SavoySchuler ๋‚ด ๋””์ž์ธ์€ ์ „์ ์œผ๋กœ ๊ท€ํ•˜์˜ ์ฒ˜๋ถ„์— ๋‹ฌ๋ ค ์žˆ์œผ๋ฉฐ, ๊ธฐ์—ฌํ•˜๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ์„ ์œ„ํ•œ ์ œ์–ด๋ฅผ ์‹œ๊ฐํ™”ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋„๋ก ๊ฒŒ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค.

@rudyhuyn MaskedTextBox ๋˜๋Š” FormattedTextBox์— ๋Œ€ํ•œ ์ œ์•ˆ์„ ๊ฒŒ์‹œํ•˜๋ฉด ๋” ๋งŽ์€ ๋น„์ค‘์„

@mrlacey ์ „ํ™”๋ฒˆํ˜ธ(์„œ์‹ ๋ฌธ์ž ์ œ์™ธ)๋Š” ์ˆœ์ˆ˜ํ•œ ์ˆซ์ž์ด์ง€๋งŒ ์–ด๋–ค ์ข…๋ฅ˜์˜ ๊ณ„์‚ฐ ์‚ฌ์šฉ ์‚ฌ๋ก€์—๋„ ์†ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋งˆ์Šคํฌ๋œ TextBox์— ๋” ์ž˜ ๋งž์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด NumberBox์—์„œ ์ด๋ฅผ ์ง€์›ํ•˜๋Š” ๋ฐ ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

์ปจํŠธ๋กค์„ ์ƒ์„ฑํ•  ๋•Œ ์–ด๋–ค ์ปจํ…์ŠคํŠธ์—์„œ ์‚ฌ์šฉํ•  ์ปจํŠธ๋กค์ด ์ค‘์š”ํ•œ์ง€์— ๋Œ€ํ•œ ๋ช…ํ™•ํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€์™€ ์˜ˆ์ œ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ฌธ์„œ.

@mrlacey : ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด์ „์— ๋งํ–ˆ๋“ฏ์ด 0-9 ๋ฌธ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์‚ฐ์ˆ  ๊ฐ’๊ณผ ์—ฐ๊ฒฐ๋œ ์‹ค์ˆ˜๋ฅผ ๋ถ„๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

IP์ฃผ์†Œ, ์ „ํ™”๋ฒˆํ˜ธ, ์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธ, ์šฐํŽธ๋ฒˆํ˜ธ๋Š” 0~9์ž๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋งŒ ์‚ฐ์ˆ ์  ๊ฐ’์€ ์—†์Šต๋‹ˆ๋‹ค(2๊ฐœ ์ถ”๊ฐ€ ๊ฐ€๋Šฅ, ๋์— ".00"์„ ๋ถ™์ด๋ฉด ๊ฐ’์˜ ์˜๋ฏธ๊ฐ€ ๋ฐ”๋€Œ๋Š” ๋“ฑ..) . ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ ๊ฐ’์€ int/double์ด ์•„๋‹Œ ๋ฌธ์ž์—ด์ด๋ฏ€๋กœ MaskedTextBox๊ฐ€ ๋” ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ์šฐํŽธ ๋ฒˆํ˜ธ๋Š” ๋ฏธ๊ตญ์—์„œ๋Š” ์ˆซ์ž๋งŒ ์‚ฌ์šฉํ•˜์ง€๋งŒ ์บ๋‚˜๋‹ค์—์„œ๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด IPv6 ์ฃผ์†Œ์—๋Š” AF ๋ฌธ์ž๊ฐ€ ํฌํ•จ๋  ์ˆ˜ ์žˆ๊ณ  ์ „ํ™” ๋ฒˆํ˜ธ์—๋Š” + ๊ธฐํ˜ธ๊ฐ€ ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(555-123-4567 ๋ฐ +555-123-4567์€ 2๊ฐœ์˜ ๋‹ค๋ฅธ ์ „ํ™”๋ฒˆํ˜ธ) ๋“ฑ...

๋‚ด ์˜๊ฒฌ์„ ์š”์•ฝํ•˜์ž๋ฉด NumberBox.Value๋Š” ๋ฌธ์ž์—ด์ด ์•„๋‹ˆ๋ผ double์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@mrlacey ์ „ํ™”๋ฒˆํ˜ธ(์„œ์‹ ๋ฌธ์ž ์ œ์™ธ)๋Š” ์ˆœ์ˆ˜ํ•œ ์ˆซ์ž์ด์ง€๋งŒ ์–ด๋–ค ์ข…๋ฅ˜์˜ ๊ณ„์‚ฐ ์‚ฌ์šฉ ์‚ฌ๋ก€์—๋„ ์†ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋งˆ์Šคํฌ๋œ TextBox์— ๋” ์ž˜ ๋งž์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด NumberBox์—์„œ ์ด๋ฅผ ์ง€์›ํ•˜๋Š” ๋ฐ ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

์ „ํ™” ๋ฒˆํ˜ธ๋Š” ์ „์ฒด ์ˆซ์ž(ํ˜•์‹ ํฌํ•จ)๋กœ ๊ตฌ์„ฑ๋  ์ˆ˜ ์žˆ์ง€๋งŒ ๊ทธ๋ ‡๋‹ค๊ณ  ํ•ด์„œ ์ˆซ์ž๊ฐ€ ๋˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ์–ด๋–ค ์ข…๋ฅ˜์˜ ์‚ฐ์ˆ  ์—ฐ์‚ฐ๋„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†์œผ๋ฉฐ ์˜๋ฏธ ์žˆ๋Š” ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
๋˜ํ•œ ์ผ๋ถ€๋Š” ๋”ํ•˜๊ธฐ ๊ธฐํ˜ธ๋กœ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋˜ํ•œ ์ „ํ™”๋ฒˆํ˜ธ์—์„œ ์•ž์— ์˜ค๋Š” 0์˜ ์ˆ˜๋Š” ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ˆซ์ž ๊ฐ’์˜ ๊ฒฝ์šฐ ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๊ณ„์‚ฐ ๋˜๋Š” ์œ„/์•„๋ž˜ ๋ฒ„ํŠผ๊ณผ ๊ฐ™์€ ์ปจํŠธ๋กค์˜ ๋‹ค๋ฅธ ๊ธฐ๋Šฅ์€ "์ „ํ™” ๋ฒˆํ˜ธ"์— ๋Œ€ํ•ด ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์ด ์ œ์–ด๋Š” ์ •๋ณด ์†์‹ค ์œ„ํ—˜ ์—†์ด int/uint ๋˜๋Š” ์†Œ์ˆ˜๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ’์œผ๋กœ ์ œํ•œ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด ํ”ผ๋“œ๋ฐฑ์„ ์ ์ ˆํ•˜๊ฒŒ ํ•ฉ์„ฑํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ํ˜•์‹ ์œ ํ˜• ๋ฐ ์—„์ง€์†๊ฐ€๋ฝ์„ ํ†ตํ•ด ๋ชจ๋“  ์œ ํ˜•์˜ ์ˆซ์ž โ€‹โ€‹๋ฌธ์ž์—ด ์ž…๋ ฅ(์˜ˆ: ์ „ํ™” ๋ฒˆํ˜ธ ๋ฐ IPv4)์— ๊ฐ€์žฅ ์ ํ•ฉํ•œ ์œ„์น˜๋ผ๊ณ  ์ƒ๊ฐ๋˜๋ฉด ์ด ๋Œ“๊ธ€์— ์—„์ง€ ์†๊ฐ€๋ฝ์„ ์˜ฌ๋ ค ์ฃผ์„ธ์š”. NumberBox๊ฐ€ ์ˆ˜ํ•™ ๋ฐ ์ˆ˜ํ•™ ๊ฐ’ ์บก์ฒ˜์—๋งŒ ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ๋‹ค๋ฅธ ์ปจํŠธ๋กค์ด๋‚˜ ์ƒˆ ์ปจํŠธ๋กค๋กœ ์—ฐ๊ธฐํ•ด์•ผ โ€‹โ€‹ํ•˜๋Š” ๊ฒฝ์šฐ ์•„๋ž˜๋กœ . (๊ณ„์‚ฐ๊ธฐ ๋ชจ๋“œ ๋ฐ Up/Down ๋ฒ„ํŠผ๊ณผ ๊ฐ™์€ ์ˆ˜ํ•™ ์—ฐ์‚ฐ์„ ์ง€์›ํ•˜๋Š” ๊ธฐ๋Šฅ์€ ํ•ด๋‹น API๋ฅผ ํ†ตํ•ด ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.)

์ „ ์„ธ๊ณ„์ ์œผ๋กœ ๊ณ ๊ฐ์—๊ฒŒ ์ตœ๊ณ ์˜ ํˆฌ์ž ์ˆ˜์ต์„ ์ œ๊ณตํ•˜๋Š” ๊ฒฐ์ •์„ ๋‚ด๋ฆด ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์ด ๋ฏผ์ฃผ์ ์œผ๋กœ ๊ฒฐ์ •๋  ๊ฒƒ์ด๋ผ๊ณ  ๋ณด์žฅํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. ๋ฌธ์ž์—ด์— ๋Œ€ํ•œ ์ „์šฉ ์ปจํŠธ๋กค์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค.

@SavoySchuler ๊ฐ’์— ์ปจํ…์ŠคํŠธ์™€ ์˜๋ฏธ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ์ ‘๋‘์‚ฌ์™€ ์ ‘๋ฏธ์‚ฌ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ

์ €๋Š” ์—ฌ๊ธฐ์—์„œ ํŒ€๊ณผ ๋™๊ธฐํ™”ํ–ˆ์œผ๋ฉฐ ์ผ๋ถ€ ๊ณต๊ฐœ ์งˆ๋ฌธ์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๋ฅผ ๊ณต์œ ํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค.

  • ์šฐ๋ฆฌ๋Š” ๊ท€ํ•˜์˜ ํ”ผ๋“œ๋ฐฑ์„ ๋“ฃ๊ณ  ์žˆ์œผ๋ฉฐ NumberBox๊ฐ€ ์ˆซ์ž ๋ฌธ์ž์—ด์— ์ ํ•ฉํ•œ ์žฅ์†Œ๊ฐ€ ์•„๋‹ˆ๋ผ๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. FormatKinds ๋ฐ CustomFormat ์†์„ฑ์€ ๋ณด๋‹ค ์ง๊ด€์ ์ธ ๋ฐฉ์‹์œผ๋กœ ์ˆซ์ž ํ˜•์‹์„ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด ๋ณด๋‹ค ๊ตฌ์ฒด์ ์ธ API๋กœ ๋Œ€์ฒด๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์ ‘๋‘์‚ฌ ๋ฐ ์ ‘๋ฏธ์‚ฌ๋Š” ์‹ค์ œ๋กœ TextBox์— ์†ํ•ฉ๋‹ˆ๋‹ค(NumberBox๊ฐ€ ์ด๋ฅผ ์ƒ์†ํ•จ). @mdtauk , @mrlacey ๋˜๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ์—๊ฒŒ ๊ธฐ๋Šฅ ์š”์ฒญ์„ ์ œ์•ˆํ•˜๊ธฐ ์œ„ํ•ด ๋ฉฐ์น  ์•ž์„œ ์‹œ์ž‘ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์‹œ์ž‘ํ•˜๊ณ  ์—ฌ๊ธฐ์— ๋งํฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‹น๋ถ„๊ฐ„์€ NumberBox๊ฐ€ ํ˜„์ง€ํ™”/์ž๋™ํ™” ์ถœ๋ ฅ์—์„œ โ€‹โ€‹์ฐจ๋‹จ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • NumberBox์˜ ์ตœ์ข… ํ”ผ๋“œ(๊ณ„์‚ฐ, ๋ฐ˜์˜ฌ๋ฆผ ๋“ฑ)๋Š” TextBox์—์„œ ๋‚˜์˜ค๋Š” Text ์†์„ฑ์˜ ๋ฌธ์ž์—ด๋กœ ์œ ์ง€๋˜๊ณ  ์ƒˆ Value ์†์„ฑ์˜ Double๋กœ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด๋Ÿฌํ•œ ํ”ผ๋“œ๋ฐฑ์„ ์„œ๋กœ์—๊ฒŒ ์ „๋‹ฌํ•˜์—ฌ ํ•˜๋‚˜์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ์ด ๋‹ค๋ฅธ ํ•˜๋‚˜์— ๋ฐ˜์˜๋˜๋„๋ก ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ์ž‘์—…์˜ ๋ชฉ์ ์€ ๊ฐ€๋Šฅํ•œ ํ•œ ๋งŽ์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ํ•„์š”ํ•  ๋•Œ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ฐ’์„ ์ค€๋น„ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • ์‚ฌ์–‘์˜ ์†์„ฑ์œผ๋กœ StepSize๊ฐ€ ๋ˆ„๋ฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์ •์ˆ˜ ์œ ํ˜•์€ Double๋กœ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค.
  • ์šฐ๋ฆฌ๋Š” ์—ฌ์ „ํžˆ ๋‚ด์žฅํ˜• ๊ณ„์‚ฐ๊ธฐ์— ๋Œ€ํ•œ ๊ธฐ๋Œ€๋ฅผ ๊ฐ–๊ณ  ์žˆ์œผ๋ฉฐ ์ด๋ฅผ ๊ฐœ์„ ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ๋” ๋งŽ์€ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. @mdtauk , ์ด ํ”ผ๋“œ๋ฐฑ ์ง€์ ์— ์ด๋ฏธ ์‘๋‹ตํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!
  • ์ž…๋ ฅ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ์™€ ๊ด€๋ จํ•˜์—ฌ ์•„์ด๋””์–ด๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž…๋ ฅ์„ ์กฐ์ž‘ํ•˜๊ฑฐ๋‚˜ ํ•„์š”์— ๋”ฐ๋ผ ๋/์ฐจ๋‹จ ์–‘์‹ ์ œ์ถœ์—์„œ ์ฒ˜๋ฆฌํ•  ๊ธฐํšŒ๋ฅผ ์ œ๊ณตํ•˜๋Š” ValueChanged ์œ ํ˜•์˜ ์ด๋ฒคํŠธ๋ฅผ ๋จผ์ € ๋ณด๋‚ด๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ˆ˜์ • ์กฐ์น˜๊ฐ€ ์ทจํ•ด์ง€์ง€ ์•Š์€ ๊ฒฝ์šฐ(์˜ˆ: ์ตœ์†Œ/์ตœ๋Œ€ ๋ฒ”์œ„ ๋‚ด์—์„œ ๊ฐ•์ œ ์‹คํ–‰, ์œ ํšจํ•˜์ง€ ์•Š์€ ๋ฌธ์ž ์ œ๊ฑฐ ๋“ฑ) NumberBox๋Š” ๋Œ€์‹  ์‚ฌ์šฉ์ž์—๊ฒŒ ์ž…๋ ฅ์— ๋Œ€ํ•œ ์˜ค๋ฅ˜ ํ‘œ์‹œ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์ด ์ด์ค‘ ์ ‘๊ทผ ๋ฐฉ์‹์„ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž๋Š” ์›ํ•˜๋Š” ๊ฒฝ์šฐ ์‘๋‹ตํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ˆ˜์ •์„ ์‚ฌ์šฉ์ž์—๊ฒŒ ์—ฐ๊ธฐํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์—ฌ์ „ํžˆ ์‘๋‹ตํ•˜๊ณ  ์žˆ๋Š” ์—„์ฒญ๋‚œ ์–‘์˜ ํ”ผ๋“œ๋ฐฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋‹ค๋ ค ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์™€ ์‚ฌ์–‘ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ์žˆ๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ์—๊ฒŒ ๋‹ต๋ณ€์„ ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค!

"์ž„๋ฒ ๋””๋“œ ๊ณ„์‚ฐ๊ธฐ๊ฐ€ ์žˆ๋Š” NumberBox์˜ ์ปจ์…‰ ์•„ํŠธ." WinUI ์ปค๋ฎค๋‹ˆํ‹ฐ, 2019๋…„ 5์›”. (์ƒ‰์ƒ)

muscle car with flames

( @ryandemopoulos ์˜

@SavoySchuler ์šฐ๋ฆฌ๊ฐ€ ๋…ผ์˜ํ•˜๊ณ  ์žˆ๋Š” ์ œ์–ด ์œ ํ˜•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ ์‹œ๋‚˜๋ฆฌ์˜ค ์˜ˆ์ œ๋ฅผ ์š”์ฒญํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ์•ฑ์—๋Š” ์ข‹์€ ์˜ˆ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋Š” ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ๋ก€ 1: ์ถ•์„ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ๋Š” 2D ๊ทธ๋ž˜ํ”„์šฉ ์„ค์ • ํŽธ์ง‘๊ธฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ด๊ฒƒ์€ ๋‹จ์ˆœํ•œ ์ˆซ์ž ์ž…๋ ฅ๋งŒ ์žˆ์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์ฆ๊ฐ€ +/- ๋ฒ„ํŠผ์ด ์œ ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • ์ด์ค‘ ๊ฐ’์€ ๊ดœ์ฐฎ์ง€๋งŒ ์ž…๋ ฅ์€ ๋ฌธ์ž๋ฅผ ๋ˆ„๋ฅผ ๋•Œ ์œ ํšจ์„ฑ์„ ๊ฒ€์‚ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” 'a'๋ฅผ ๋ˆŒ๋Ÿฌ๋„ ์ž…๋ ฅ ์ƒ์ž์— ํ‘œ์‹œ๋˜์–ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ์ž…๋ ฅ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋Š” ํ…Œ๋‘๋ฆฌ๋ฅผ ๋นจ๊ฐ„์ƒ‰์œผ๋กœ ๋งŒ๋“ค๊ณ  ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ฒฝ๊ณ ๋ฅผ ์ฃผ์–ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ๋‹จ์ˆœํžˆ ์ž˜๋ชป๋œ ๊ฐ’์„ ์ž…๋ ฅํ•  ์ˆ˜ ์—†์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ํ˜„์ง€ํ™”๋Š” ์ปจํŠธ๋กค์— ์˜ํ•ด ์ง€์›๋˜์–ด์•ผ ํ•˜๊ณ  ์†Œ์ˆ˜์  ์ดํ•˜ ์ž๋ฆฟ์ˆ˜(์‰ผํ‘œ, ๋งˆ์นจํ‘œ ๋“ฑ) ์ด๋™์€ ํŠน๋ณ„ํ•œ ๊ฒฝ์šฐ๋กœ ์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

image

์‚ฌ๋ก€ 2: ์•„๋ž˜์™€ ๊ฐ™์ด ํ†ตํ™” ๊ฐ’์— ๋Œ€ํ•œ ์ž…๋ ฅ ํ•„๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์‚ฌ์šฉ์ž ์ •์˜ ์ปจํŠธ๋กค "CurrencyBox"์ž…๋‹ˆ๋‹ค.

  • ์ด๊ฒƒ์€ ๊ณ„์‚ฐ๊ธฐ ๋ฒ„ํŠผ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ  ๋ฐฉ์ •์‹ 2+3์„ ์ž…๋ ฅํ•˜๋Š” ๊ธฐ๋Šฅ์€ ์—ฌ๊ธฐ์— ์•ฝ๊ฐ„์˜ ๊ฐ€์น˜๊ฐ€ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค(๋‚˜๋Š” ์—ฌ์ „ํžˆ ์ด๊ฒƒ์ด ๋ณ„๋„์˜ ์ปจํŠธ๋กค์ด์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค)
  • ์ด์ค‘ ๊ฐ’์€ ์ด์— ์ ํ•ฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์œ ํ˜•์˜ ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด Value์— ๋Œ€ํ•œ ์‚ฌ์–‘์„ double์—์„œ decimal๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค . ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋ฌธ์ž์—ด ํ…์ŠคํŠธ๋ฅผ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๋Š” ๊ฒƒ์€ ๊ฐœ๋ฐœ์ž์˜ ๋ชซ์ž…๋‹ˆ๋‹ค.
  • ์Œ์ˆ˜ ๋ถ€ํ˜ธ๊ฐ€ ๋ณ„๋„๋กœ ์ฒ˜๋ฆฌ๋˜๋Š” ํŠน๋ณ„ํ•œ ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์ธ์—์„œ ์‹ค์ˆ˜๋ฅผ ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ์‰ฝ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์‹ค์ œ๋กœ NumberBox๊ฐ€ ๊ทธ๊ฒƒ์„ ์ฆ‰์‹œ ์ง€์›ํ•  ๊ฒƒ์ด๋ผ๊ณ  ๊ธฐ๋Œ€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ํ…์ŠคํŠธ ์ •๋ ฌ์€ ์„ค์ •ํ•˜๋Š” ๋ฐ ์ค‘์š”ํ•˜๋ฉฐ ์ ‘๋‘์‚ฌ/์ ‘๋ฏธ์‚ฌ๋Š” ํ†ตํ™” ๊ธฐํ˜ธ๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๋ฐ ๋งค์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค(ํ˜„์ง€ํ™”๋Š” ๊ธฐํ˜ธ๋ฅผ ์˜ค๋ฅธ์ชฝ ๋˜๋Š” ์™ผ์ชฝ์— ํ‘œ์‹œํ• ์ง€ ์—ฌ๋ถ€๋ฅผ ์•„๋Š” ๋ฐ ์—ฌ์ „ํžˆ ์ž ์žฌ์ ์ธ ๋ฌธ์ œ๊ฐ€ ๋  ์ˆ˜ ์žˆ์ง€๋งŒ ์•ฑ ์ž์ฒด์—๋Š” ํ•ด๋‹น ๋…ผ๋ฆฌ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Œ)
  • ์‚ฌ์šฉ์ž๋Š” ์™ธ๋ถ€ ๋˜๋Š” ๋กœ์ปฌ ๊ฐ’์„ ๋ชจ๋‘ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‘ ๊ฐ’ ๋ชจ๋‘์— ๋Œ€ํ•œ NumberFormatInfo ๋ฐ CultureInfo๋Š” UI ๋ฌธํ™”๊ถŒ๊ณผ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ˜„์ง€ํ™”๋ฅผ ์œ„ํ•ด ์ปจํŠธ๋กค์€ ์‚ฌ์šฉ์ž ์ง€์ • NumberFormatInfo์— ๋Œ€ํ•œ ์žฌ์ •์˜๋ฅผ ์ง€์›ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

image

์ง€๊ธˆ ์•ฑ์—์„œ Windows Community Toolkit์€ ์•„๋ž˜์™€ ๊ฐ™์ด TextBox์— ์†์„ฑ์ด ์—ฐ๊ฒฐ๋œ ๋‘ ๊ฒฝ์šฐ ๋ชจ๋‘์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
TextBoxRegex.ValidationMode="๋™์ "
TextBoxRegex.ValidationType="10์ง„์ˆ˜"

๋งˆ์ง€๋ง‰ ๋Œ“๊ธ€ ๋ช‡ ๊ฐœ(๋„ˆ๋ฌด ๊ธธ์–ด์„œ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค!)

  • ์—ฌ๊ธฐ์—์„œ ์ž ์žฌ์ ์œผ๋กœ 3๊ฐ€์ง€ ๋‹ค๋ฅธ ์ปจํŠธ๋กค์— ๋Œ€ํ•ด ๋…ผ์˜ํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. Bar-bones NumberBox, ๋ฐฉ์ •์‹๊ณผ ๊ณ ๊ธ‰ ์ˆซ์ž ์ž…๋ ฅ์ด ๊ฐ€๋Šฅํ•œ CalculatorBox(๊ณ„์‚ฐ๊ธฐ ๋ฒ„ํŠผ!), ๋งˆ์ง€๋ง‰์œผ๋กœ ์ „ํ™” ๋ฒˆํ˜ธ ๋ฐ IP ์ฃผ์†Œ์™€ ๊ฐ™์€ ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ์ž…๋ ฅ์„ ์œ„ํ•œ MaskedTextBox์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ๋“ค์„ ํ˜ผ๋™ํ•ด์„œ๋Š” ์•ˆ ๋˜๋ฉฐ ์ด๋Ÿฌํ•œ ๊ฐœ๋…์„ ๋ถ„๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋™์˜ํ•˜๋Š” ๊ฒƒ์ด ์‚ฌ์–‘์„ ์ง„ํ–‰ํ•˜๋Š” ๋ฐ ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค.
  • ์šฐ๋ฆฌ๋Š” ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ด๊ณ  ํ‹€๋ฆผ์—†์ด ๊ฐ€์žฅ ์œ ์šฉํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋Œ€ํ•œ ์ดˆ์ ์„ ๋†“์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์œ ํšจํ•œ ์ˆซ์ž๋งŒ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๋„๋ก ์ž…๋ ฅ ํ•„ํ„ฐ๋ง ์™ธ์—๋Š” ์•„๋ฌด ๊ฒƒ๋„ ์—†๋Š” ํ‰๋ฒ”ํ•œ ํ…์ŠคํŠธ ์ƒ์ž์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ชจ๋“  ์˜ต์…˜์€ ๋Œ ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์ฆ๊ฐ€ +/- ๋ฒ„ํŠผ์„ ์ƒ๊ฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค)
  • ๋‚˜๋Š” ์—ฌ์ „ํžˆ ๊ตฌ๋ฌธ ๋ถ„์„๋œ ๊ฐ’์—์„œ ์†Œ์ˆ˜์  ์ •๋ฐ€๋„๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ์บก์ฒ˜ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์–‘์—์„œ 2๋ฐฐ์—์„œ 10์ง„์ˆ˜๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์œ ๋ฆฌ์ˆ˜ ์ž…๋ ฅ๊ณผ ๋‹ค๋ฅธ ์ •์ˆ˜ ์ž…๋ ฅ์„ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” API "IsInteger = true"์—์„œ ์‹ญ์ง„ ๊ธฐ๋ณธ๊ฐ’์—์„œ ๋ณ€๊ฒฝํ•˜๋Š” ์ƒˆ๋กœ์šด ์†์„ฑ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํŽธ์ง‘: NumberBox.Value ์œ ํ˜•์— ๋Œ€ํ•ด 2๋ฐฐ์—์„œ 10์ง„์ˆ˜๋กœ ์ „ํ™˜ํ•˜๋Š” ์•„์ด๋””์–ด๋ฅผ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด C++ WinRT ์„ธ๊ณ„์— ์กด์žฌํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋Š” ๊ฒƒ์€ ํ‹€๋ ธ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š๊ณ  ๋Œ€์‹  .net ์ฝ”์–ด/ํ”„๋ ˆ์ž„์›Œํฌ์—๋งŒ ์žˆ์Šต๋‹ˆ๋‹ค.

@robloo , ๊ทธ ๋งˆ์ง€๋ง‰ ์ฝ”๋ฉ˜ํŠธ์— ๋Œ€ํ•ด WinRT์—๋Š” Decimal ์œ ํ˜•์ด ์—†์Šต๋‹ˆ๋‹ค.

XAML ๋„๊ตฌ ํ‚คํŠธ์˜ Visual Tree ๋””๋ฒ„๊ฑฐ๋Š” ๋„๊ตฌ ํ‚คํŠธ์˜ NumericUpDown ์ปจํŠธ๋กค์— ํฌ๊ฒŒ ์˜์กดํ•˜๋Š” ๋„๊ตฌ๋กœ, ๋งˆ์šฐ์Šค ๋Œ๊ธฐ, ๋ฒ„ํŠผ, ํ‚ค๋ณด๋“œ๋ฅผ ์‚ฌ์šฉํ•œ ์ฆ๊ฐ€/๊ฐ์†Œ๊ฐ€ ๋ชจ๋‘ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ณ„์‚ฐ๊ธฐ ์ž…๋ ฅ๋„ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
image

@robloo ์™€ @xyzzer , ์ด๊ฒƒ์€ ๋‚ด๊ฐ€ ์ฐพ๊ณ  ์žˆ๋Š” ๋ฐ”๋กœ ๊ทธ ์ข…๋ฅ˜์˜ ์ •๋ณด์ž…๋‹ˆ๋‹ค!

๊ฒ€์ฆ/๋งˆ์Šคํ‚น

@robloo , ํŠนํžˆ ์‚ฌ๋ก€ 1: Bullet 2 - ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๋Œ€ ๋งˆ์Šคํ‚น์— ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ "์ž˜๋ชป๋œ ์ž…๋ ฅ" ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ํ†ตํ•ด ์ด์•ผ๊ธฐํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  • ์ƒˆ ์‚ฌ์šฉ์ž๊ฐ€ NumberBox์— "2"๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
  • NumberBox๋Š” ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ์ž…๋ ฅ์„ "0"์œผ๋กœ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐํšŒ๋ฅผ ์ œ๊ณตํ•˜๋Š” "ValueChanged" ์ด๋ฒคํŠธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค. ์•„๋ฌด๋Ÿฐ ์กฐ์น˜๋„ ์ทจํ•˜์ง€ ์•Š์œผ๋ฉด...
  • NumberBox์˜ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๊ฐ€ ๋นจ๊ฐ„์ƒ‰์œผ๋กœ ๋น›๋‚˜๊ณ  ์ˆซ์ž ์ž…๋ ฅ๋งŒ ํ—ˆ์šฉ๋จ์„ ์•Œ๋ฆฌ๋Š” ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ์‚ฌ์šฉ์ž์—๊ฒŒ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค(์ด ๋ถ€๋ถ„์€ ์•„์ง ์™„์ „ํžˆ ํ•ฉ๋ฆฌํ™”๋˜์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ ์ด๊ฒƒ์€ ๊ฐ€์„ค์ผ ๋ฟ์ž…๋‹ˆ๋‹ค).

์ด ์ผ๋ จ์˜ ์ด๋ฒคํŠธ๋ฅผ ํ†ตํ•ด ์ƒ์„ฑํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ฒฝํ—˜์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋งˆ์Šคํ‚น์ด ๋ฐ”๋žŒ์งํ•œ ๊ธฐ๋ณธ๊ฐ’์ด ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ์ดํ•ดํ•˜์ง€๋งŒ ์ง€๋‚œ ์ฃผ์— ์šฐ๋ฆฌ ํŒ€์ด ๋…ผ์˜ํ•œ ๋‚ด์šฉ์„ ๊ณต์œ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. Fluent ์ปจํŠธ๋กค์—์„œ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ(์˜ค๋ฅ˜ ํ‘œ์‹œ๊ธฐ/๋ฉ”์‹œ์ง€)๊ฐ€ ๋Œ€์•ˆ์ธ ๋งˆ์Šคํ‚น์ด ์‹ค๋ง์Šค๋Ÿฝ๊ณ  ์‹ค๋ง์Šค๋Ÿฌ์šธ ์ˆ˜ ์žˆ๋‹ค๋Š” ๋ฐฉํ–ฅ์— ์ฐฉ๋ฅ™ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ตœ์ข… ์‚ฌ์šฉ์ž๊ฐ€ ํ‚ค๋ณด๋“œ ์ž…๋ ฅ์—์„œ ์•„๋ฌด ์ถœ๋ ฅ๋„ ๊ฒฝํ—˜ํ•˜์ง€ ๋ชปํ•  ๋•Œ ํ˜ผ๋ž€์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•ด ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋Š” ๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์€ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๊ฐ€ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ผ์ • ์ˆ˜์ค€์˜ ํˆฌ๋ช…์„ฑ๊ณผ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ์†Œ๋ฆฌ ์—†์ด ๊ฐ•์ œ๋˜๋Š” ๊ฒƒ๊ณผ๋Š” ๋ฐ˜๋Œ€๋กœ ๊ฒฝํ—˜์„ ๋” ์ž˜ ์•Œ ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ์˜ ํ˜„์žฌ ์กฐ์น˜๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ณ ๊ธ‰ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ(๊ณง TextBox์— ์ œ๊ณต๋จ)๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ํ•„์š”์— ๋”ฐ๋ผ ValueChanged ์ด๋ฒคํŠธ๋ฅผ ํ†ตํ•ด ๋งˆ์Šคํ‚นํ•  ๊ธฐํšŒ๋ฅผ ์ฐจ๋‹จํ•˜์ง€ ์•Š์œผ๋ฉด์„œ ๊ธฐ๋ณธ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ดํ•ดํ•˜์ž๋ฉด, ์ด๋Š” ๊ถŒ์žฅ ํ™˜๊ฒฝ์„ ๊ธฐ๋ณธ์œผ๋กœ ์ œ๊ณตํ•˜๋ฉด์„œ ๋ชจ๋“  ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•  ์ˆ˜ ์žˆ์„ ๋งŒํผ ์ถฉ๋ถ„ํžˆ ์œ ์—ฐํ•ฉ๋‹ˆ๋‹ค.

๋‹น์‹ ์˜ ์ƒ๊ฐ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ์ด๋Ÿฌํ•œ ๊ฐœ๋…์„ ์ถ”๊ฐ€๋กœ ๊ตฌ์„ฑํ•˜๊ฑฐ๋‚˜ ๋” ๋‚˜์€ ๊ฒฝํ—˜์„ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•œ ์•„์ด๋””์–ด์— ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ’ ํ˜•์‹

๊ท€ํ•˜์˜ ๋‹ค๋ฅธ ์š”์ ์ธ @robloo ์— DecimalPrecision ์ •๋ฐ€๋„ ์†์„ฑ์„ Spec ์— ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ="0"์œผ๋กœ ์„ค์ •ํ•˜๋ฉด ์ •์ˆ˜๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ MinValue="0"์„ ์„ค์ •ํ•˜๋ฉด ์ˆซ์ž๋ฅผ ์Œ์ˆ˜๊ฐ€ ์•„๋‹Œ ์ƒํƒœ๋กœ ์œ ์ง€ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(๋˜๋Š” ValueChanged ์ด๋ฒคํŠธ๋Š” ์ž…๋ ฅ์„ ์ ˆ๋Œ€๊ฐ’์œผ๋กœ ๊ฐ•์ œ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ๋Š” ๋˜ ๋‹ค๋ฅธ ๊ธฐํšŒ์ž…๋‹ˆ๋‹ค).

์•„์ง ์ŠคํŽ™ ์„ ์‚ดํŽด๋ณด์…จ๋‚˜์š”? ๋‚˜๋Š” ๋‹น์‹ ์˜ ๊ฒฝํ—˜์„ ์™„์ „ํžˆ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ชจ๋“  ์†์„ฑ์„ ํฌํ•จํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ(๊ฒ€์ฆ ๋Œ€ ๋งˆ์Šคํ‚น ๋…ผ์˜ ๋ณด๋ฅ˜ ์ค‘) ๋‚ด๊ฐ€ ๋†“์นœ ๊ฒƒ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š”์ง€ ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๋งˆ์Šคํ‚น์€ ์ตœ์ข… ์‚ฌ์šฉ์ž๊ฐ€ ํ‚ค๋ณด๋“œ ์ž…๋ ฅ์—์„œ ์•„๋ฌด ์ถœ๋ ฅ๋„ ๊ฒฝํ—˜ํ•˜์ง€ ๋ชปํ•  ๋•Œ ์‹ค๋ง์Šค๋Ÿฝ๊ณ  ํ˜ผ๋ž€์Šค๋Ÿฌ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

100% ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๋” ๋‚˜์€ ๋ฐฉ๋ฒ•์€ LosingFocus/EnterPressed์—์„œ ์œ ํšจ์„ฑ์„ ๊ฒ€์‚ฌํ•˜๊ณ  ์ž…๋ ฅ๋œ ๊ฐ’์ด ์œ ํšจ์„ฑ์„ ๊ฒ€์‚ฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ oldValue๋ฅผ ๋ณต์›ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด LosingFocus/EnterPressed์—์„œ ํŠธ๋ฆฌ๊ฑฐ๋˜๊ณ  oldValue/newValue๋ฅผ ํฌํ•จํ•˜๋Š” ์‹ ํ˜ธ๊ฐ€ ์™„๋ฒฝํ•œ ์ด์œ ์ž…๋‹ˆ๋‹ค.

@adrientetar , ์ข‹์€ ์ง€์ ์ž…๋‹ˆ๋‹ค! ๊ทธ๊ฒƒ์ด ๋‹น์‹ ์ด ๋งŒ๋“ค์–ด์•ผ ํ•  ๊ฒฝํ—˜์ž…๋‹ˆ๊นŒ? ๊ทธ๋ ‡๋‹ค๋ฉด ValueChanged ์ด๋ฒคํŠธ๊ฐ€ ์ด์ „ ๊ฐ’๊ณผ ์ƒˆ ๊ฐ’์„ ๋ชจ๋‘ ๋ณด๋‚ด๋„๋ก ํ•ด์•ผ ํ•˜๋Š” ์ž‘์—…์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

@SavoySchuler ๊ทธ๊ฒƒ์€ ์‹ค์ œ๋กœ ๋‚ด ์•ฑ์—์„œํ•˜๊ณ  ์‹ถ์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ปจํŠธ๋กค์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๋Š” ํ•œ ํ•ด๋‹น ๋™์ž‘์„ ์ง์ ‘ ๋นŒ๋“œํ•ฉ๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์›ํ•˜๋Š” ๋‹ค๋ฅธ ๊ฒƒ์€ 10 ์ฆ๋ถ„์˜ ๊ฒฝ์šฐ Shift+โ†‘/โ†“ ์ด๊ณ  100 ์ฆ๋ถ„์˜ ๊ฒฝ์šฐ Ctrl+Shift+โ†‘/โ†“ ์ด์ง€๋งŒ 100 ์ฆ๋ถ„์ด ํ•ญ์ƒ ์˜๋ฏธ๊ฐ€ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ข‹์€ ์ ! ์ปจํŠธ๋กค์ด RangeBase์—์„œ ํŒŒ์ƒ๋˜๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
SmallChange์™€ LargeChange๋ฅผ ๋ชจ๋‘ ์ •์˜ํ•˜๊ณ  ์ด ๋‘˜์„ ๋‹ค์Œ์—์„œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
์•„์ฃผ ์ตœ์†Œํ•œ.
ํ˜ธ์ถœํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ํ‘œ์ค€ ํ‚ค๋ณด๋“œ ์กฐํ•ฉ์˜ ์˜ˆ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?
UWP์˜ RangeBase ๋˜๋Š” WinForms/ComCtl(?) NumericUpDown์— ํฐ ๋ณ€ํ™”๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

2019๋…„ 6์›” 3์ผ ์›”์š”์ผ ์˜คํ›„ 3์‹œ 50๋ถ„ Adrien Tรฉtar [email protected]
์ผ๋‹ค:

@SavoySchuler https://github.com/SavoySchuler ํ•˜๊ณ ์‹ถ์€๊ฑฐ
์‹ค์ œ๋กœ ๋‚ด ์•ฑ์—์„œ ์ˆ˜ํ–‰ํ•˜๋ฉด ์ปจํŠธ๋กค์ด ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๋Š” ํ•œ ํ•ด๋‹น ๋™์ž‘์„ ์ง์ ‘ ๋นŒ๋“œํ•ฉ๋‹ˆ๋‹ค.
๊ธฐ๋ณธ์ ์œผ๋กœ.

๋‚ด๊ฐ€ ์›ํ•˜๋Š” ๋‹ค๋ฅธ ๊ฒƒ์€ Shift+โ†‘/โ†“๋กœ 10์”ฉ ์ฆ๊ฐ€ํ•˜๊ณ 
Ctrl+Shift+โ†‘/โ†“๋Š” 100์”ฉ ์ฆ๊ฐ€ํ•˜์ง€๋งŒ 100์”ฉ ์ฆ๊ฐ€ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
ํ•ญ์ƒ ์˜๋ฏธ๊ฐ€ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/microsoft/microsoft-ui-xaml/issues/483?email_source=notifications&email_token=AANMBMFZBHJIE4DR2KN46TTPYWN3BA5CNFSM4HA4PBNKYY4TWWWK3TUL52HS4DFVREXG43VMVBW63
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AANMBMG4AWBK44VE4O4GYR3PYWN3BANCNFSM4HA4PBNA
.

ํ™•์ธ์„ ์œ„ํ•ด ํ™•์ธํ•˜๊ฒ ์ง€๋งŒ ํ‚ค๋ณด๋“œ ๋‹จ์ถ•ํ‚ค๋Š” ๊ตฌํ˜„ํ•˜๋ ค๋ฉด ์•ฑ์— ๋งก๊ฒจ์•ผ ํ•œ๋‹ค๊ณ  ์ž์‹ ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์„ #21์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ฑ ๊ทผ๊ฑฐ๋กœ ์‹œ๋„ํ–ˆ๊ณ  ์ƒˆ๋กœ์šด ํ‚ค๋ณด๋“œ ๋‹จ์ถ•ํ‚ค๋ฅผ ๋„์ž…ํ•˜๋Š” ๊ฒƒ์€ Windows์—์„œ ์ฃผ์žฅํ•˜์ง€ ์•Š์€ ๊ฑฐ์˜ ๋ชจ๋“  ๋‹จ์ถ•ํ‚ค๊ฐ€ ์ด์ œ ์•ฑ ์ˆ˜์ค€์—์„œ ์‚ฌ์šฉ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ํ”Œ๋ ˆ์ดํ•˜๊ธฐ์—๋Š” ์œ„ํ—˜ํ•œ ๊ฒŒ์ž„์ž…๋‹ˆ๋‹ค. F6 bandwagon) - ํ•˜์ง€๋งŒ ์—ฌ๊ธฐ์„œ ์ œ์–ด ํฌ์ปค์Šค๊ฐ€ ์˜ˆ์™ธ๋ฅผ ํ—ˆ์šฉํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!

๋นŒ๋“œ 2018์€ INotifyDataErrorInfo๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ TextBox ์ปจํŠธ๋กค์— ๋Œ€ํ•œ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ์ƒํƒœ๊ฐ€ ๋ฐœํ‘œ๋œ ๋•Œ์˜€์Šต๋‹ˆ๋‹ค.
์ด๊ฒƒ์€ ํ˜„์žฌ ํ…์ŠคํŠธ ๋ฌธ์ž์—ด์˜ ์œ ํšจ์„ฑ์„ ๊ฒ€์‚ฌํ•˜๊ฑฐ๋‚˜ ๋ฌดํšจํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๋งˆ์Šคํ‚น๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
image

ํŽธ์ง‘: ์•„์ด์ฝ˜๊ณผ ๋” ๋‘๊บผ์šด ํ•˜๋‹จ ํ…Œ๋‘๋ฆฌ ์ƒ‰์ƒ์˜ ์‚ฌ์šฉ์€ ์ƒ‰๋งน ์ƒํ™ฉ๊ณผ ํ‘๋ฐฑ์œผ๋กœ ๋ณผ ๋•Œ ์ธ์‹์„ ๋•๊ธฐ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ณต๊ฐ„์ด ๋ถ€์กฑํ•œ ๊ฒฝ์šฐ ํ•˜๋‹จ ์˜ค๋ฅ˜ ํ…์ŠคํŠธ๊ฐ€ ์•„์ด์ฝ˜์˜ ํˆดํŒ์œผ๋กœ ํ‘œ์‹œ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@mdtauk ๋‹น์‹ ์€ ์ด๋Ÿฌํ•œ ๋งˆํฌ์—…์— ๊ฒฝ์ด

@SavoySchuler ๋นŒ๋“œ 2018์— ํ‘œ์‹œ๋œ ์˜ˆ์ œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ์‰ฌ์šด ์™ธ์‚ฝ
image

๊ทธ๋ฆฌ๊ณ  ๋งŽ์€ ์˜ˆ์ œ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค :)
image

image

์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋˜ ๋‹ค๋ฅธ ๊ธด ๊ฒƒ์ž…๋‹ˆ๋‹ค!

@SavoySchuler @adrientetar ์•„๋ž˜ ์ง„์ˆ ์—์„œ ๊ท€ํ•˜๊ฐ€ ์–ด๋””์—์„œ ์™”๋Š”์ง€ ํ™•์‹คํžˆ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ์ฃผ์žฅํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ˆซ์ž๋งŒ ์ž…๋ ฅํ•˜๋Š” ๊ฒƒ์ด ๋งค์šฐ ๋ช…๋ฐฑํ•œ ๋ช‡ ๊ฐ€์ง€ ํŠน๋ณ„ํ•œ ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์ž˜๋ชป๋œ ๋ฌธ์ž๋ฅผ ๋šฑ๋šฑํ•˜๊ฒŒ ํ•‘๊ฑฐ๋งํ•˜์ง€ ๋ชปํ•˜๋„๋ก ํ•จ์œผ๋กœ์จ ์‹ค์ œ๋กœ ์‚ฌ์šฉ์ž์—๊ฒŒ ํ˜ธ์˜๋ฅผ ๋ฒ ํ’€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋งˆ์Šคํ‚น์€ ์ตœ์ข… ์‚ฌ์šฉ์ž๊ฐ€ ํ‚ค๋ณด๋“œ ์ž…๋ ฅ์—์„œ ์•„๋ฌด ์ถœ๋ ฅ๋„ ๊ฒฝํ—˜ํ•˜์ง€ ๋ชปํ•  ๋•Œ ์‹ค๋ง์Šค๋Ÿฝ๊ณ  ํ˜ผ๋ž€์Šค๋Ÿฌ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

100% ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๋” ๋‚˜์€ ๋ฐฉ๋ฒ•์€ LosingFocus/EnterPressed์—์„œ ์œ ํšจ์„ฑ์„ ๊ฒ€์‚ฌํ•˜๊ณ  ์ž…๋ ฅ๋œ ๊ฐ’์ด ์œ ํšจ์„ฑ์„ ๊ฒ€์‚ฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ oldValue๋ฅผ ๋ณต์›ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด LosingFocus/EnterPressed์—์„œ ํŠธ๋ฆฌ๊ฑฐ๋˜๊ณ  oldValue/newValue๋ฅผ ํฌํ•จํ•˜๋Š” ์‹ ํ˜ธ๊ฐ€ ์™„๋ฒฝํ•œ ์ด์œ ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌ๋˜๋Š”์ง€ ์•Œ์•„๋ณด๊ธฐ ์œ„ํ•ด ๋‹ค๋ฅธ ์•ฑ์„ ๋‘˜๋Ÿฌ๋ณด๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์ƒํ˜ธ ์ž‘์šฉ์— ๋Œ€ํ•ด Microsoft๋ณด๋‹ค ๋” ๋งŽ์€ ์—ฐ๊ตฌ๋ฅผ ํ•˜๋Š” ์‚ฌ๋žŒ์€ ์—†์„ ๊ฒƒ ๊ฐ™์•„์„œ ๋ฐ์Šคํฌํ†ฑ 64๋น„ํŠธ ๋ฒ„์ „์˜ Word์™€ UWP ๋ฒ„์ „์˜ OneNote๋ฅผ ์ฐจ๋ก€๋กœ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค. ๋‹˜ ๋ง์”€์— ๊ฑฐ์˜ ์ „์ ์œผ๋กœ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๋ถ„๋ช…ํžˆ ์ˆซ์ž ์ž…๋ ฅ์ผ ๋ฟ์ธ ๊ธ€๊ผด ํฌ๊ธฐ ๋˜๋Š” ๋ชจ์–‘ ํฌ๊ธฐ ์ž…๋ ฅ ์ƒ์ž์— ํ…์ŠคํŠธ๋ฅผ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ดˆ์  ์†์‹ค์„ ํฌ๊ฒŒ ํ™•์ธํ•˜๊ณ  ๋งˆ์ง€๋ง‰ ์œ ํšจํ•œ ์ž…๋ ฅ์œผ๋กœ ๋˜๋Œ๋ฆฝ๋‹ˆ๋‹ค.

| ์ œ๋ชฉ | ๊ทธ๋ฆผ | ๋Œ“๊ธ€ |
|---------|-----|------------|
| UWP OneNote ๊ธ€๊ผด ํฌ๊ธฐ ํ•ญ๋ชฉ |image | ๋ชจ๋“  ๊ฐ’์€ ํ‚ค๋ณด๋“œ์—์„œ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ž๋™์œผ๋กœ ์œ ํšจ์„ฑ์ด ๊ฒ€์‚ฌ๋˜๊ณ  ์ดˆ์ ์„ ์žƒ์€ ๊ฒฝ์šฐ ๋งˆ์ง€๋ง‰ ์œ ํšจํ•œ ๊ฐ’์œผ๋กœ ์žฌ์„ค์ •๋ฉ๋‹ˆ๋‹ค. |
| ๋ฐ์Šคํฌํƒ‘ ๋‹จ์–ด ๊ธ€๊ผด ํฌ๊ธฐ ํ•ญ๋ชฉ |image | ํ‚ค๋ณด๋“œ์—์„œ ๋ชจ๋“  ๊ฐ’์„ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ดˆ์ ์„ ์žƒ์œผ๋ฉด ์ž๋™์œผ๋กœ ์œ ํšจ์„ฑ์ด ๊ฒ€์‚ฌ๋˜๋ฉฐ ์œ ํšจํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. [ํ™•์ธ]์„ ํด๋ฆญํ•˜๋ฉด ๋งˆ์ง€๋ง‰ ์œ ํšจํ•œ ๊ฐ’์œผ๋กœ ์žฌ์„ค์ •๋ฉ๋‹ˆ๋‹ค. |
| UWP OneNote 2D ๊ทธ๋ž˜ํ”„ |image | ์–ด๋–ค ๊ฐ’์ด๋“  ํ‚ค๋ณด๋“œ์—์„œ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์œ ํšจํ•˜์ง€ ์•Š์€ ๊ฐ’์€ ๋ฌด์‹œ๋˜๊ณ  ๊ณ„์‚ฐ์— ๋งˆ์ง€๋ง‰ ์œ ํšจํ•œ ์ž…๋ ฅ์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค(์ดˆ์  ์ƒ์‹ค ์‹œ ์œ ํšจ์„ฑ์„ ๊ฒ€์‚ฌํ•˜์ง€ ์•Š์Œ). ์ฆ๊ฐ€ +/- ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ๋งˆ์ง€๋ง‰ ์œ ํšจํ•œ ์ž…๋ ฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. |
| ๋ฐ”ํƒ• ํ™”๋ฉด ๋‹จ์–ด ๋ชจ์–‘ ํฌ๊ธฐ ํ•ญ๋ชฉ |image | ํ‚ค๋ณด๋“œ์—์„œ ๋ชจ๋“  ๊ฐ’์„ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ดˆ์ ์„ ์žƒ์œผ๋ฉด ์ž๋™์œผ๋กœ ์œ ํšจ์„ฑ์ด ๊ฒ€์‚ฌ๋˜๊ณ  ์ดˆ์ ์„ ์žƒ์œผ๋ฉด ๋งˆ์ง€๋ง‰ ์œ ํšจํ•œ ๊ฐ’์œผ๋กœ ์žฌ์„ค์ •๋ฉ๋‹ˆ๋‹ค. |

๊ทธ๋ž˜์„œ ๋‚˜๋Š” ๋‚ด๊ฐ€ ํ‹€๋ ธ๋‹ค๋Š” ๊ฒƒ์„ ์ฆ๋ช…ํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋‹น์‹ ๊ณผ ๋™์˜ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค!

์‚ฌ์ด๋“œ ์ฝ”๋ฉ˜ํŠธ:

  • ์ด์ „์— ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด NumberBox์— ํ„ฐ์น˜/๊ฐ€์ƒ ํ‚ค๋ณด๋“œ๊ฐ€ ์žˆ๋Š” ํ‚ค๋ณด๋“œ ํฌ์ปค์Šค๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์ˆซ์ž ํ‚ค๋ณด๋“œ๋งŒ ํ‘œ์‹œ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์™ผ์ชฝ์—์„œ ์•„๋ž˜๋กœ ์ฆ๊ฐ€ํ•˜๊ณ  ์˜ค๋ฅธ์ชฝ์—์„œ ์œ„๋กœ ์ฆ๊ฐ€ํ•˜๋Š” ๊ฒƒ์€ ์Šคํƒ€์ผ๋ง ์ธก๋ฉด์—์„œ ์—ฌ๊ธฐ์—์„œ ๋…ผ์˜ํ•  ํฅ๋ฏธ๋กœ์šด ์•„์ด๋””์–ด์ž…๋‹ˆ๋‹ค. ์ข‹์•„์š”!
    image
  • ์ƒˆ ์‚ฌ์šฉ์ž๊ฐ€ NumberBox์— "2"๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
  • NumberBox๋Š” ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ์ž…๋ ฅ์„ "0"์œผ๋กœ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐํšŒ๋ฅผ ์ œ๊ณตํ•˜๋Š” "ValueChanged" ์ด๋ฒคํŠธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค. ์•„๋ฌด๋Ÿฐ ์กฐ์น˜๋„ ์ทจํ•˜์ง€ ์•Š์œผ๋ฉด...
  • NumberBox์˜ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๊ฐ€ ๋นจ๊ฐ„์ƒ‰์œผ๋กœ ๋น›๋‚˜๊ณ  ์ˆซ์ž ์ž…๋ ฅ๋งŒ ํ—ˆ์šฉ๋จ์„ ์•Œ๋ฆฌ๋Š” ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ์‚ฌ์šฉ์ž์—๊ฒŒ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค(์ด ๋ถ€๋ถ„์€ ์•„์ง ์™„์ „ํžˆ ํ•ฉ๋ฆฌํ™”๋˜์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ ์ด๊ฒƒ์€ ๊ฐ€์„ค์ผ ๋ฟ์ž…๋‹ˆ๋‹ค).
    ์ด ์ผ๋ จ์˜ ์ด๋ฒคํŠธ๋ฅผ ํ†ตํ•ด ์ƒ์„ฑํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ฒฝํ—˜์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
    ๋‹น์‹ ์˜ ์ƒ๊ฐ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ์ด๋Ÿฌํ•œ ๊ฐœ๋…์„ ์ถ”๊ฐ€๋กœ ๊ตฌ์„ฑํ•˜๊ฑฐ๋‚˜ ๋” ๋‚˜์€ ๊ฒฝํ—˜์„ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•œ ์•„์ด๋””์–ด์— ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ž…๋ ฅ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ์ „์ฒด ํ”Œ๋žซํผ์— ์ข‹๋‹ค๋Š” ์ ์„ ์™„์ „ํžˆ ์ดํ•ดํ•˜๊ณ  ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ณธ์งˆ์ ์œผ๋กœ ์ˆซ์ž์— ๋Œ€ํ•œ ํŠน๋ณ„ํ•œ ์ฒ˜๋ฆฌ ์—†์ด ์ž…๋ ฅ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ์„ค๋ช…ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐ’์„ ์ž๋™์œผ๋กœ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๋Š” ๊ฒƒ ์™ธ์— NumberBox๊ฐ€ ๋ฌด์Šจ ์†Œ์šฉ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๊ฐœ๋ฐœ์ž๋กœ์„œ ๋ฐ์ดํ„ฐ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๊ฐ€ ํฌํ•จ๋œ TextBox๋Š” ๊ฑฐ์˜ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

์œ„์˜ ์˜ˆ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ์€ ์šฐ๋ฆฌ์˜ ์•„์ด๋””์–ด์™€ @adrientetar ๊ฐ€ ๋งํ•˜๋Š” ๊ฒƒ์˜ ํ˜ผํ•ฉ์ด์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” ์‹œ๊ฐ์  ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋„๋ก ์•„๋ฌด ๊ฐ’์ด๋‚˜ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์†์‹ค ์ดˆ์ ์—์„œ ๊ฐ’์€ ์ž๋™์œผ๋กœ ์œ ํšจ์„ฑ์ด ๊ฒ€์‚ฌ๋˜๊ณ  ์ด์ „์˜ ์œ ํšจํ•œ ์ˆซ์ž(๋˜๋Š” ๋น„์–ด ์žˆ์Œ)๋Š” ์ž๋™์œผ๋กœ ๋˜๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž…๋ ฅ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ์ง์ ‘ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ๋ฒˆ๊ฑฐ๋กœ์›€์„ ๋œ์–ด์ค๋‹ˆ๋‹ค(์šฐ๋ฆฌ๋Š” ์ด๋ฏธ NumberBox์˜ ์ˆซ์ž์—ฌ์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค). ๋˜ํ•œ ๋ฐ์ดํ„ฐ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๊ฐ€ ํฌํ•จ๋œ TextBox์™€ ๋ช…ํ™•ํ•˜๊ฒŒ ๊ตฌ๋ณ„๋ฉ๋‹ˆ๋‹ค.

์ด๋ฒคํŠธ ์ธก๋ฉด์—์„œ ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ๋” ๋ช…ํ™•ํ•ด์ง€๋ฉด ํ…์ŠคํŠธ ๋ณ€๊ฒฝ์„ ์ทจ์†Œํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐํšŒ๋ฅผ ๊ฐ–๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ValueChanged ์™ธ์— ์ž…๋ ฅ์„ ๋น„๊ต ๋ฐ โ€‹โ€‹์ทจ์†Œํ•  ์ˆ˜ ์žˆ๋„๋ก ValueChanging ๋ฐ TextChanging ์ด๋ฒคํŠธ๋ฅผ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. ํ™•์‹คํžˆ OldValue์™€ NewValue๋Š” ๊ด€๊ณ„์—†์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ตœ์†Œํ•œ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋‹ค์‹œ OldValue๋กœ ๋น ๋ฅด๊ฒŒ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(UWP๋Š” ์ด๋ฒคํŠธ ๋‚ด์—์„œ TextValue๋ฅผ ์ˆ˜์ •ํ•  ๋•Œ ์ถฉ๋Œํ•˜๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•˜์ง€๋งŒ).

์‚ฌ์–‘๊ณผ ๊ด€๋ จํ•˜์—ฌ: DecimalPrecision์— ๋Œ€ํ•œ ์ข‹์€ ์•„์ด๋””์–ด๊ฐ€ ์žˆ์ง€๋งŒ ๊ฒ€ํ† ํ•˜๊ณ  ๋‚ด ์˜๊ฒฌ์„ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ๋” ๋งŽ์€ ์‹œ๊ฐ„์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ String=Empty, Value=Null์ด์–ด์•ผ ํ•˜๊ณ  ์ฆ๋ถ„ +/- ๋ฒ„ํŠผ์„ ๋ˆŒ๋ €์„ ๋•Œ ๊ฐ’์ด ๋น„์–ด ์žˆ๋Š” ๋Œ€์‹  0์œผ๋กœ ์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ์ž‘์€ ๋‰˜์•™์Šค๊ฐ€ ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

@mdtauk ์ด๋ ‡๊ฒŒ ์ข‹์€ ์ผ๋Ÿฌ์ŠคํŠธ๋ฅผ ์ด๋ ‡๊ฒŒ ๋นจ๋ฆฌ ๋งŒ๋“ค

@roblo ์นœ์ ˆํ•œ ๋Œ“๊ธ€ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‹น์‹ ์˜ +/-์— ๊ด€ํ•ด ๊ฐ„๋‹จํžˆ ํ•  ๋ง์ด ์žˆ์Šต๋‹ˆ๋‹ค
์ด NumberBox๊ฐ€ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ˆ˜ํ•™์  ์—ฐ์‚ฐ๊ณผ ํ˜ผ๋™์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ํ˜„์žฌ ์Šคํ•€ ๋ฒ„ํŠผ์— ์‚ฌ์šฉ๋˜๋Š” Up ๋ฐ Down ๊ธฐํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ๋‚˜์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

image

iOS๋Š” "์Šคํ…Œํผ" ์ปจํŠธ๋กค์„ ์‚ฌ์šฉํ•˜์ง€๋งŒ ํ…์ŠคํŠธ ์ž…๋ ฅ์€ ๋ณ„๋„์ด๋ฉฐ ์ธ๋ผ์ธ ๊ณ„์‚ฐ์ด ์—†์Šต๋‹ˆ๋‹ค.
image

์—ฌ๊ธฐ ๋‚ด๊ฐ€ ์ฐพ์€ ๋ช‡ ๊ฐ€์ง€ ๋” ๋งŽ์€ ๋””์ž์ธ์ด ์žˆ์Šต๋‹ˆ๋‹ค
image

๋‚ด๊ฐ€ ์„ ํƒํ•œ ๋””์ž์ธ์€ ์ด ์ปจํŠธ๋กค์— ๋Œ€ํ•œ Microsoft์˜ ์ผ๋ฐ˜์ ์ธ ์Šคํƒ€์ผ์— ๋งž๋Š” ๊ฒƒ ๊ฐ™์ง€๋งŒ ์ตœ์„ ์˜ ์„ ํƒ์ž…๋‹ˆ๊นŒ ์•„๋‹ˆ๋ฉด ์˜ฌ๋ฐ”๋ฅธ ์„ ํƒ์ž…๋‹ˆ๊นŒ? ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜๋Š”์ง€ ๋“ฃ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

ํŽธ์ง‘: ๋Œ€์ฒด ์–‘์‹์˜ ์ผ๋ถ€ ๋ชจํ˜•์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค(ํ•˜์ง€๋งŒ ์ฒซ ๋ฒˆ์งธ ์•„์ด๋””์–ด๊ฐ€ ๊ฐ€์žฅ ์ข‹๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค...)
image

+/- ์œ„์น˜์—์„œ @mdtauk ์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์œ„์น˜๊ฐ€ ๊ฐ€์žฅ ์ข‹์Šต๋‹ˆ๋‹ค.

image

XAML ControlTemplate์ด ์žˆ์œผ๋ฏ€๋กœ ์‚ฌ์šฉ์ž(๊ฐœ๋ฐœ์ž)๋Š” ํ•ญ์ƒ ๋‹ค๋ฅธ ๋‘ ๋ ˆ์ด์•„์›ƒ์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ž ์ง€์ • ํ…œํ”Œ๋ฆฟ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@robloo , ๋‹น์‹ ์€ ์ƒ์„ธํ•œ ๋‹ต๋ณ€์— ๋Œ€ํ•ด ์‚ฌ๊ณผํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค - ํŠนํžˆ ๊ทธ๋“ค์ด ๋ช‡ ๊ฐ€์ง€ ์ข‹์€ ์›ƒ์Œ์„ ํฌ์žฅํ•  ๋•Œ! ํ„ฐ์น˜/๊ฐ€์ƒ ํ‚ค๋ณด๋“œ์— ๋Œ€ํ•œ ํƒ์›”ํ•œ ์•„์ด๋””์–ด - ๊ฐœ๋ฐœ์ž/ํŒ€์—์„œ ์‹คํ–‰ํ•˜๋„๋ก ์‚ฌ์–‘์˜ ๊ณต๊ฐœ ์งˆ๋ฌธ ์„น์…˜์— ์ถ”๊ฐ€ํ–ˆ์œผ๋ฉฐ ํ—ˆ์šฉํ•  ์ˆ˜ ์—†๋Š” ์„ฑ๋Šฅ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์—†๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ๊ทธ๊ฒƒ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ๊ทธ๊ฒƒ์€ ์‚ฌ์šฉ์ž๋“ค์—๊ฒŒ ๊ต‰์žฅํ•œ ํŽธ๋ฆฌํ•จ์ด ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‹น์‹ ์€ ๊ฒ€์ฆ์— ๋Œ€ํ•œ ํ›Œ๋ฅญํ•œ ์š”์ ์„ ์ œ์‹œํ•ฉ๋‹ˆ๋‹ค ...

[1] ์งˆ๋ฌธ ์‹œ๊ฐ„: ๊ฐœ๋ฐœ์ž๊ฐ€ ์ด ๋™์ž‘์„ ์ทจ์†Œํ•˜๊ณ  ๋Œ€์‹  ์ˆ˜ํ–‰ํ•  ์ž‘์—…/์˜ค๋ฅ˜ ํ‘œ์‹œ๊ธฐ ๋˜๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ๋Š” ์ด๋ฒคํŠธ๋ฅผ ๋…ธ์ถœํ•˜๋ฉด์„œ ํ—ˆ์šฉ๋˜์ง€ ์•Š๋Š” ์ž…๋ ฅ์„ ์ž๋™์œผ๋กœ ์ด์ „ ๊ฐ’์œผ๋กœ ๋˜๋Œ๋ฆฌ๋Š” ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ์‹œ์Šคํ…œ์— ๋ฐ˜๋Œ€ํ•˜๋Š” ์‚ฌ๋žŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์‹œ๊ฐ์ ์œผ๋กœ ๊ฒŒ์‹œํ•œ ์˜ˆ์ œ์—์„œ ๋ถ„๋ฆฌ๋œ UpDownButtons์˜ ์žฅ์ ์„ ๋ด…๋‹ˆ๋‹ค. ๋‚˜๋Š” @mdtauk ์™€ @sonnemaf ๊ฐ€ ๊ธฐ๋ณธ๊ฐ’์— ๋Œ€ํ•œ ์˜ฌ๋ฐ”๋ฅธ ๊ธธ์„

๋ถ„๋ฆฌ๋œ UpDownButton์— ๋Œ€ํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‚ด ๋งˆ์Œ์€ ์ตœ์†Œํ•œ์˜ ๋‹จ๋ฐฉํ–ฅ ์ž…๋ ฅ์„ ๊ธฐ๋Œ€ํ•˜๋Š” ์ž‘์—…์ด๋‚˜ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž…๋ ฅ ์‹ค์ˆ˜๋ฅผ ๋” ์–ด๋ ต๊ฒŒ ๋งŒ๋“œ๋Š” ์ž‘์—…์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์ด ์˜ˆ๋ฅผ ๋“ค์–ด ์˜ํ™”๋‚˜ ์ฝ˜์„œํŠธ ํ‹ฐ์ผ“์„ ๊ตฌ๋งคํ•  ๋•Œ ์—ฌ๋Ÿฌ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ๊ณผ ์›น ์‚ฌ์ดํŠธ์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ฒฝํ—˜์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋•Œ ์ œ ์งˆ๋ฌธ์€...

[2] ์งˆ๋ฌธ ์‹œ๊ฐ„: ๋ถ„๋ฆฌ๋œ UpDownButton์ด ์žˆ๋Š” NumberBox๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด Xaml ControlTemplate์— ์˜์กดํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ(์ฆ‰, ์ด๊ฒƒ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ง€์›์„ ์ •๋‹นํ™”ํ•˜๊ธฐ์— ์ถฉ๋ถ„ํžˆ ์ผ๋ฐ˜์ ์ด์ง€ ์•Š์Œ) ๋˜๋Š” UpDownButton์ด ์—ฐ์†์ ์œผ๋กœ ๋‚˜ํƒ€๋‚˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•œ ์†์„ฑ์„ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€ ๋ถ„๋ฆฌ?

Fluent Design System ์ง€์นจ์ด ์ด ๋‘ ๋ฒˆ์งธ ์งˆ๋ฌธ์„ ๋ฌด์‹œํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ด ์งˆ๋ฌธ์— ๋Œ€ํ•ด @chigy ๋ฅผ ํ•‘ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

UpDownButtons ๋Œ€ํ™”์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ฑ ๊ณ ๋ ค ์‚ฌํ•ญ์„ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. UpDownButtons๊ฐ€ ์„œ๋กœ ๊ทผ์ ‘ํ•˜๋ฉด ๋‚ด๋ ˆ์ดํ„ฐ/ํ™”๋ฉด ํŒ๋…๊ธฐ ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ฐœ๋…์  ๋ช…ํ™•์„ฑ์„ ์ œ๊ณตํ•˜๋Š” ๋™์‹œ์— ํ‚ค๋ณด๋“œ ํƒ์ƒ‰ ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ ํƒ์ƒ‰ ํšจ์œจ์„ฑ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ด๋ฅผ ํƒ€ํ˜‘ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ๋„ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

์ปจํŠธ๋กค์ด ๋งค์šฐ ๋„“์ง€ ์•Š์€ ๊ฒฝ์šฐ ํ™”์‚ดํ‘œ๊ฐ€ ์ˆ˜์ง์œผ๋กœ ์Œ“์ด๋„๋ก ํ•˜๊ณ  ์‹ถ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค(๋‚ด ์•ฑ์— ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค). ์„ค์ •๋œ ๋„ˆ๋น„์— ๋”ฐ๋ผ ์ œ์–ด๊ฐ€ ๊ฐ€๋Šฅํ• ๊นŒ์š”? ๊ทธ๊ฒƒ์ด ์˜๋ฏธ๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ๊ฒฝ์šฐ ๊ทธ๋ ‡๊ฒŒ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์€ ์œ ์ฐฝํ•œ ๋””์ž์ธ ์ง€์นจ์— ๋‹ฌ๋ ค ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” 3๊ฐœ์˜ ๊ณต๊ฐœ ์งˆ๋ฌธ์œผ๋กœ ์ œ์•ˆ์„ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค.

์ปจ์…‰ ๋””์ž์ธ์„ ํ•ด์ฃผ์‹  @mdtauk๋‹˜ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

@adrientetar ํ•„์š”ํ•˜๋‹ค๊ณ  ์ง€์ ํ•ด์ฃผ์…”์„œ ๊ธฐ์ฉ๋‹ˆ๋‹ค. ์ด ์„ธ ๊ฐ€์ง€ ๊ตฌ์„ฑ์— ๋Œ€ํ•ด ์—ด๊ฑฐํ˜•์ด ํ•„์š”ํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๊นŒ?

์ปจํŠธ๋กค์ด ๋งค์šฐ ๋„“์ง€ ์•Š์€ ๊ฒฝ์šฐ ํ™”์‚ดํ‘œ๊ฐ€ ์ˆ˜์ง์œผ๋กœ ์Œ“์ด๋„๋ก ํ•˜๊ณ  ์‹ถ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค(๋‚ด ์•ฑ์— ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค). ์„ค์ •๋œ ๋„ˆ๋น„์— ๋”ฐ๋ผ ์ œ์–ด๊ฐ€ ๊ฐ€๋Šฅํ• ๊นŒ์š”? ๊ทธ๊ฒƒ์ด ์˜๋ฏธ๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ๊ฒฝ์šฐ ๊ทธ๋ ‡๊ฒŒ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์€ ์œ ์ฐฝํ•œ ๋””์ž์ธ ์ง€์นจ์— ๋‹ฌ๋ ค ์žˆ์Šต๋‹ˆ๋‹ค.

์ปจํŠธ๋กค์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐ„์˜ ์–‘์„ ์ธ์‹ํ•˜๊ณ  ๋ฐ˜์‘ํ•˜๋„๋ก ํ•˜๋Š” ์ œ์•ˆ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. #677 ์ปจํŠธ๋กค์ด ์ข์•„์ง์— ๋”ฐ๋ผ ์Šคํ•€ ๋ฒ„ํŠผ์˜ ์œ„์น˜๋ฅผ โ€‹โ€‹๋ณ€๊ฒฝํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. MinWidth์™€ ์œ ์‚ฌํ•œ NarrowWidth ์†์„ฑ์ด ํ•„์š”ํ•˜๊ฑฐ๋‚˜ ํžŒํŠธ ์—ญํ• ์„ ํ•˜๋Š” NumberOfDigits๊ฐ€ ํ•„์š”ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

ํšŒ์ƒ‰์œผ๋กœ ํ‘œ์‹œ๋œ ํ…์ŠคํŠธ ์˜ˆ์™€ ๊ด€๋ จํ•˜์—ฌ - ์ด๊ฒƒ์ด ์ตœ์ข… ๊ฒฐ๊ณผ๊ฐ€ ๋ฌด์—‡์ธ์ง€์— ๋Œ€ํ•œ ํžŒํŠธ ์—ญํ• ์„ ํ•˜๊ธฐ๋ณด๋‹ค ์‚ฌ์šฉ์ž๊ฐ€ ํ‘œ์‹œ๋˜๋Š” ๊ฐ’์„ ์ฑ„์šฐ๋„๋ก ๋ถ€์ถ”๊ธธ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ์šฐ๋ คํ•ฉ๋‹ˆ๋‹ค. PlaceholderText์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.

AccentColor์™€ ๋‹ค๋ฅธ ๊ธ€๊ผด ๋‘๊ป˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ˆˆ์— ๋„๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ?
image

ํ›Œ๋ฅญํ•œ ๋งํฌ, @mdtauk. ์ด๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€ ๊ฐ€๋Š” ๊ธธ์ด๋ผ๋ฉด [Auto, Vertical, Horizontal, Detached]์™€ ๊ฐ™์€ ๊ฐ’์„ ๊ฐ€์ง„ ์—ด๊ฑฐํ˜•์œผ๋กœ ์ด๊ฒƒ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ƒ๊ฐ?

๋˜ํ•œ, ๋‚˜๋Š” ์ด๋ฏธ์ง€๋ฅผ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค! ํšŒ์ƒ‰์œผ๋กœ ํ‘œ์‹œ๋œ ํ…์ŠคํŠธ๊ฐ€ ํ”„๋กฌํ”„ํŠธ์ฒ˜๋Ÿผ ๋ณด์ผ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ƒ๊ฐ์ด ์˜ณ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฉ”์‹œ์ง€๋ฅผ ๋”ฐ๋ฅด๋ฉด "="๋กœ ์ธํ•ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

ํ›Œ๋ฅญํ•œ ๋งํฌ, @mdtauk. ์ด๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€ ๊ฐ€๋Š” ๊ธธ์ด๋ผ๋ฉด [Auto, Vertical, Horizontal, Detached]์™€ ๊ฐ™์€ ๊ฐ’์„ ๊ฐ€์ง„ ์—ด๊ฑฐํ˜•์œผ๋กœ ์ด๊ฒƒ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ƒ๊ฐ?

์ดˆ๊ธฐ ์ƒ๊ฐ์€ ์ปจํ…Œ์ด๋„ˆ์˜ ์ˆซ์ž๊ฐ€ ์ˆ˜์ง ๋ฐฉํ–ฅ์ด ํ•„์š”ํ•œ ๊ณณ์—์„œ ์ถฉ๋ถ„ํžˆ ์ปค์งˆ ์ˆ˜ ์žˆ์„๊นŒ์š”? AutoCompleteBox๋Š” ๊ฒ€์ƒ‰ ๋ฒ„ํŠผ์„ ์›€์ง์ด์ง€ ์•Š์œผ๋ฉฐ ๋ฌธ์ž์—ด์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์ˆซ์ž๋ณด๋‹ค ๊น๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์ด ์ˆœ์ „ํžˆ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ณต๊ฐ„์— ๊ตญํ•œ๋œ ๊ฒƒ์ด๋ผ๋ฉด ์ž๋™ ์‘๋‹ต ๋™์ž‘(ํ•ด๋‹น ์ œ์•ˆ์ด ๊ณ„์† ์ง„ํ–‰๋˜๋Š” ๊ฒฝ์šฐ)์ด ์—ด๊ฑฐํ˜•๋ณด๋‹ค ๋‚ซ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์ปจํŠธ๋กค ์ž์ฒด์˜ ์˜ต์…˜์„ ์ œ๊ณตํ•˜๋ฉด ์ปจํŠธ๋กค์˜ ์ผ๊ด€์„ฑ ์—†๋Š” ์‚ฌ์šฉ์œผ๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ์ง€๋งŒ, ์ด๊ฒƒ์€ github์—์„œ ์šฐ๋ฆฌ๊ฐ€ ๋‹จ๋…์œผ๋กœ ์ฒ˜๋ฐฉํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์‚ฌ์šฉ์ž ์—ฐ๊ตฌ์—์„œ ์‚ดํŽด๋ด์•ผ ํ•˜๋Š” ๊ฒƒ์ด์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.


๊ฐœ๋ฐœ์ž๋Š” ์ปจํŠธ๋กค์— ๋Œ€ํ•ด _์ •๋ง_ ๋‹ค๋ฅธ ๋ ˆ์ด์•„์›ƒ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ปจํŠธ๋กค์„ ๋‹ค์‹œ ํ…œํ”Œ๋ฆฟํ•  ์ˆ˜ ์žˆ๋Š” ์˜ต์…˜์ด ํ•ญ์ƒ ์žˆ์œผ๋ฉฐ, ์›ํ•˜๋Š” ๊ฒฝ์šฐ ์ด์— ๋Œ€ํ•œ ๋Œ€์ฒด ์Šคํƒ€์ผ ์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. A) ๊ธฐ๋ณธ๊ฐ’๊ณผ ์ˆ˜์ง ์Šคํƒ€์ผ ๋ฐ ํ…œํ”Œ๋ฆฟ - ๋ฐ B) ๋‘ ์Šคํƒ€์ผ์ด ๋ชจ๋‘ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ํ…Œ์ŠคํŠธ๋˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

@mdtauk ์œ„/์•„๋ž˜ ๊ธฐํ˜ธ๊ฐ€ ์ตœ๊ณ ๋ผ๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์ €๋Š” ์ž…๋ ฅ์˜ ๋ฐ˜๋Œ€์ชฝ์— ํ™”์‚ดํ‘œ๊ฐ€ ์žˆ๋Š” ์˜ˆ๋ฅผ ๋ณด์—ฌ์ฃผ๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ „์— ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ์‚ฌ์šฉ์ž๊ฐ€ ํ„ฐ์น˜ ๊ธฐ๋ฐ˜ UI์—์„œ ๊ฑฐ์˜ ํ•„์ˆ˜์ธ ์ž˜๋ชป๋œ ํ‚ค๋ฅผ ๋ˆ„๋ฅด์ง€ ์•Š๋„๋ก ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. OneNote์—์„œ ์ œ๊ณตํ•œ ์˜ˆ์ œ์—๋Š” +/- ๊ธฐํ˜ธ๊ฐ€ ์žˆ์—ˆ์ง€๋งŒ ๊ธฐํ˜ธ ์ž์ฒด๋ฅผ ๋ฌด์‹œํ•˜๋„๋ก ์ถ”๊ฐ€ํ–ˆ์–ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

@SavoySchuler

[2] ์งˆ๋ฌธ ์‹œ๊ฐ„: ๋ถ„๋ฆฌ๋œ UpDownButton์ด ์žˆ๋Š” NumberBox๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด Xaml ControlTemplate์— ์˜์กดํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ(์ฆ‰, ์ด๊ฒƒ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ง€์›์„ ์ •๋‹นํ™”ํ•˜๊ธฐ์— ์ถฉ๋ถ„ํžˆ ์ผ๋ฐ˜์ ์ด์ง€ ์•Š์Œ) ๋˜๋Š” UpDownButton์ด ์—ฐ์†์ ์œผ๋กœ ๋‚˜ํƒ€๋‚˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•œ ์†์„ฑ์„ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€ ๋ถ„๋ฆฌ?

UWP๊ฐ€ ์ฒ˜์Œ ๋งŒ๋“ค์–ด์กŒ์„ ๋•Œ ํ„ฐ์น˜๊ฐ€ ๋จผ์ €์˜€๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ถ„๋ฆฌ๋œ UpDownButton์ด ํ‹€๋ฆผ์—†์ด ๋” ๋‚˜์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ ์ดํ›„๋กœ ํ„ฐ์น˜ ์šฐ์„  ์š”๊ตฌ ์‚ฌํ•ญ์ด ์™„ํ™”๋˜์—ˆ์œผ๋ฉฐ ์‚ฌ์šฉ์ž๊ฐ€ ๋งˆ์šฐ์Šค์™€ ๊ฐ™์€ ์ •ํ™•ํ•œ ์ž…๋ ฅ ๋ฐฉ๋ฒ•(์ด๋™ ๊ฑฐ๋ฆฌ๊ฐ€ ์ ์Œ)์„ ์‚ฌ์šฉํ•  ๋•Œ ์„œ๋กœ ์˜†์— ์žˆ๋Š” ๋ฒ„ํŠผ์ด ๋” ์ข‹์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋ฏ€๋กœ ์—ด๊ฑฐํ˜•์ด UpDownButton์ด ํ‘œ์‹œ๋˜๋Š” ๋ฐฉ์‹์„ ์ง€์ •ํ•˜๋Š” ๋ฐ ์œ ์šฉํ•˜๋‹ค๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.

์—ด๊ฑฐํ˜• ๊ฐ’์˜ ๊ฒฝ์šฐ ์—ฌ๋Ÿฌ ์ƒํƒœ์— ๋Œ€ํ•ด ๋…ผ์˜ํ–ˆ์œผ๋ฉฐ ์ผ๋ฐ˜ํ™”ํ•˜๋ฉด ๋ช‡ ๊ฐ€์ง€๋ฅผ ๋” ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • SeparatedHorizontal : ์™ผ์ชฝ์˜ ์•„๋ž˜์ชฝ ํ™”์‚ดํ‘œ, ์˜ค๋ฅธ์ชฝ์˜ ์œ„์ชฝ ํ™”์‚ดํ‘œ
  • SeparatedVertical : ์•„๋ž˜์ชฝ์— ์•„๋ž˜์ชฝ ํ™”์‚ดํ‘œ, ์œ„์ชฝ์— ์œ„์ชฝ ํ™”์‚ดํ‘œ
  • ์™ผ์ชฝ: ์™ผ์ชฝ์—์„œ ์„œ๋กœ ์˜†์— ์žˆ๋Š” ์•„๋ž˜์ชฝ ๋ฐ ์œ„์ชฝ ํ™”์‚ดํ‘œ(๊ฐ€๋กœ ๋ฐฉํ–ฅ)
  • ์˜ค๋ฅธ์ชฝ : ์˜ค๋ฅธ์ชฝ์—์„œ ์•„๋ž˜์ชฝ ํ™”์‚ดํ‘œ์™€ ์œ„์ชฝ ํ™”์‚ดํ‘œ๊ฐ€ ๋‚˜๋ž€ํžˆ ํ‘œ์‹œ๋จ(๊ฐ€๋กœ ๋ฐฉํ–ฅ)
  • ์ƒ๋‹จ : ์ƒ๋‹จ์—์„œ ์„œ๋กœ ์˜†์— ์žˆ๋Š” ์•„๋ž˜์ชฝ ๋ฐ ์œ„์ชฝ ํ™”์‚ดํ‘œ(์ˆ˜์ง ๋ฐฉํ–ฅ)
  • ํ•˜๋‹จ : ํ•˜๋‹จ์—์„œ ์„œ๋กœ ์˜†์— ์žˆ๋Š” ์•„๋ž˜์ชฝ ๋ฐ ์œ„์ชฝ ํ™”์‚ดํ‘œ(์ˆ˜์ง ๋ฐฉํ–ฅ)

์ด ๋ชจ๋“  ๊ฒƒ์ด ๋„ˆ๋ฌด ๋ณต์žกํ•ด์ง€๋ฉด(๋น ๋ฅด๊ฒŒ๋„) XAML์˜ ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋Œ€ํ•œ ์ปจํŠธ๋กค์„ ๋‹ค์‹œ ํ…œํ”Œ๋ฆฟํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ์•„์ด๋””์–ด๋ฅผ ๋ฒ„๋ฆฌ์ž๋ฉด, ๋ถ„๋ฆฌ๋œ UpDownButtons์˜ ๊ธฐํ˜ธ ๋ฐฉํ–ฅ์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ๋„ [<] 123 [>] ์— ์˜๋ฏธ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•ฑ๋ณ„๋กœ ์Šคํƒ€์ผ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ด ์ถ”๊ฐ€๋œ ๋ณต์žก์„ฑ์„ ๋ฌด์‹œํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ์ ‘๊ทผ์„ฑ ๋ฌธ์ œ ์ค‘ ์ผ๋ถ€๋Š” ๋‚ด๊ฐ€ ์˜ˆ์ œ๋ฅผ ๊ฐ€์ ธ์˜จ OneNote์—์„œ ์ด๋ฏธ ํ•ด๊ฒฐ๋˜์—ˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@robloo ๊ท€ํ•˜๊ฐ€ ์–ธ๊ธ‰ํ•œ ์™ผ์ชฝ ๋ฐ ์˜ค๋ฅธ์ชฝ ๋ฐฐ์น˜๋Š” ์‹ ์ค‘ํ•œ ์„ค์ •๋ณด๋‹ค๋Š” RtL ๋ฐ LtR ํ˜„์ง€ํ™”๋ฅผ ์œ„ํ•ด ์œ ์ง€๋˜์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์•„๋ž˜๋Š” ์ œ ์˜๊ฒฌ์ž…๋‹ˆ๋‹ค

๋˜ํ•œ ํ…์ŠคํŠธ ํ•„๋“œ ์œ„์— ๋ฒ„ํŠผ์„ ๋ฐฐ์น˜ํ•˜๋Š” ๊ฒƒ์ด ์˜๋ฏธ์ƒ ์˜๋ฏธ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์‹ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋ฒ„ํŠผ์— ์†๊ฐ€๋ฝ์„ ๋Œ€๊ณ  ์žˆ์„ ๋•Œ ์ˆซ์ž๊ฐ€ ๋ณ€๊ฒฝ๋˜๋Š” ๊ฒƒ์„ ๋ณด๊ธฐ ์–ด๋ ต๊ฒŒ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  ์กฐํ•ฉ์„ ์ปจํŠธ๋กค์— ํฌํ•จํ•˜๋ฉด ํ˜ผ๋ž€์Šค๋Ÿฌ์šด ์‚ฌ์šฉ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ธด๊ธ‰ํ•œ ํ•„์š”๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ํ…œํ”Œ๋ฆฟ์„ ๋‹ค์‹œ ์ž‘์„ฑํ•˜์—ฌ ์ด๋Ÿฌํ•œ ๋ชจ๋“  ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ…์ŠคํŠธ ํ•„๋“œ ์•„๋ž˜์˜ ๋ฒ„ํŠผ์€ ๊ณต๊ฐ„์ด ์ œํ•œ๋œ ์˜์—ญ์—์„œ ์–ด๋Š ์ •๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ปจํŠธ๋กค ์ž์ฒด์˜ ์˜ต์…˜์œผ๋กœ ํƒญํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ„ํŠผ์ด ํ›จ์”ฌ ์ปค์ง‘๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ์ปจํŠธ๋กค๊ณผ ํ•จ๊ป˜ ๋ฒˆ๋“ค๋กœ ์ œ๊ณต๋˜๋Š” ์Šคํƒ€์ผ์ธ์ง€, ์•„๋‹ˆ๋ฉด ๋‹ค์Œ ์‚ฌ์ด์˜ ์—ด๊ฑฐํ˜• ์ธ์ง€ ์—ฌ๋ถ€:

NumberBox.SpinButtonOrientation = SpinButtonOrientation.Horizontal  
NumberBox.SpinButtonOrientation = SpinButtonOrientation.Vertical  

๊ฐ„๋‹จํ•œ ์งˆ๋ฌธ์œผ๋กœ ๊ฐ€๋Šฅํ•œ ์ œ์•ˆ: ์ด๋ก ์ ์œผ๋กœ ์ˆซ์ž ์ƒ์ž์—์„œ๋Š” ์ˆซ์ž ์ƒ์ž์—๋งŒ ์ˆซ์ž๋ฅผ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์“ฐ์—ฌ์ง„ ์ˆซ์ž๋ฅผ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๊ณ  ์ด ํ•„๋“œ์˜ ์‹ค์ œ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์ด ์–ผ๋งˆ๋‚˜ ์–ด๋ ค์šธ๊นŒ์š”?

์˜ˆ๋ฅผ ๋“ค์–ด:
ํ•˜๋‚˜ + ๋‘˜ = 3
๋ฒˆ์—ญํ•˜๋‹ค
1 + 2 = 3

๋˜๋Š”
ํ•˜๋‚˜ ๋”ํ•˜๊ธฐ ๋‘˜์€ ์…‹
๋ฒˆ์—ญํ•˜๋‹ค
1 + 2 = 3

๊ทธ๋ƒฅ ์•„์ด๋””์–ด์ž…๋‹ˆ๋‹ค.

๊ฐ„๋‹จํ•œ ์งˆ๋ฌธ์œผ๋กœ ๊ฐ€๋Šฅํ•œ ์ œ์•ˆ: ์ด๋ก ์ ์œผ๋กœ ์ˆซ์ž ์ƒ์ž์—์„œ๋Š” ์ˆซ์ž ์ƒ์ž์—๋งŒ ์ˆซ์ž๋ฅผ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์“ฐ์—ฌ์ง„ ์ˆซ์ž๋ฅผ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๊ณ  ์ด ํ•„๋“œ์˜ ์‹ค์ œ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์ด ์–ผ๋งˆ๋‚˜ ์–ด๋ ค์šธ๊นŒ์š”?

์˜ˆ๋ฅผ ๋“ค์–ด:
ํ•˜๋‚˜ + ๋‘˜ = 3
๋ฒˆ์—ญํ•˜๋‹ค
1 + 2 = 3

๋˜๋Š”
ํ•˜๋‚˜ ๋”ํ•˜๊ธฐ ๋‘˜์€ ์…‹
๋ฒˆ์—ญํ•˜๋‹ค
1 + 2 = 3

๊ทธ๋ƒฅ ์•„์ด๋””์–ด์ž…๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์€ ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜์–ด์˜ ๊ฒฝ์šฐ. ๋‹ค๋ฅธ ์–ธ์–ด๋กœ ํ•ด๋‹น ๋ฌธ์ž์—ด์„ ๋ฒˆ์—ญํ•˜๊ณ  ๊ตฌ๋ฌธ ๋ถ„์„ํ•ด์•ผ ํ•  ๋•Œ ๋ฌธ์ œ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํด๋ž€๋“œ์–ด ์‚ฌ์šฉ์ž๋Š” ์˜์–ด ๋‹จ์–ด๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

ํ˜„์žฌ๋กœ์„œ๋Š” ์ˆซ์ž 0-9, ์†Œ์ˆ˜, ์ˆซ์ž ๊ตฌ๋ถ„ ๊ธฐํ˜ธ ๋ฐ ์ˆ˜ํ•™ ์—ฐ์‚ฐ์ž์˜ ํ˜•์‹๋งŒ ๋…ผ์˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‹ค๋ฅธ ๋ฒˆํ˜ธ ์ฒด๊ณ„๋ฅผ ์ˆ˜์šฉํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์–ธ์–ด ๋ฒˆ์—ญ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์€ ํฐ ๋…ธ๋ ฅ์ด ๋  ๊ฒƒ์ด๋ฉฐ ์ด์ ์ด ๋ฌด์—‡์ธ์ง€ ๋ช…ํ™•ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.


์ด์ œ ์ด ์ปจํŠธ๋กค์ด ์˜ค๋””์˜ค ์ž…๋ ฅ์œผ๋กœ ์กฐ์ž‘๋˜์–ด์•ผ ํ•˜๋ฏ€๋กœ ์ˆซ์ž๋‚˜ ์ž‘์—…์„ ๋งํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ๋งํ•˜๋Š” ์–ธ์–ด๋ฅผ ํ•ด์„ํ•˜๋Š” ์ž‘์—…์ด ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋ ˆ์ดํ„ฐ:
"๊ฐ’์ด ์—†๋Š” Pixels NumberBox"

์‚ฌ์šฉ์ž:
"๋ฐฑ์ด์‹ญํŒ” ํ”ฝ์…€"

[ 128 ____________ | ํ”ฝ์…€ ]

์‚ฌ์šฉ์ž:
"64ํ”ฝ์…€ ์ถ”๊ฐ€"

[ 192 ____________ | ํ”ฝ์…€ ]

๋‚˜๋ ˆ์ดํ„ฐ:
"๋ฐฑ๊ตฌ์‹ญ์ด ํ”ฝ์…€"

[1] ์งˆ๋ฌธ ์‹œ๊ฐ„: ๊ฐœ๋ฐœ์ž๊ฐ€ ์ด ๋™์ž‘์„ ์ทจ์†Œํ•˜๊ณ  ๋Œ€์‹  ์ˆ˜ํ–‰ํ•  ์ž‘์—…/์˜ค๋ฅ˜ ํ‘œ์‹œ๊ธฐ ๋˜๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ๋Š” ์ด๋ฒคํŠธ๋ฅผ ๋…ธ์ถœํ•˜๋ฉด์„œ ํ—ˆ์šฉ๋˜์ง€ ์•Š๋Š” ์ž…๋ ฅ์„ ์ž๋™์œผ๋กœ ์ด์ „ ๊ฐ’์œผ๋กœ ๋˜๋Œ๋ฆฌ๋Š” ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ์‹œ์Šคํ…œ์— ๋ฐ˜๋Œ€ํ•˜๋Š” ์‚ฌ๋žŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์ž…๋ ฅํ•œ ํ…์ŠคํŠธ ๊ฐ€ ์œ ํšจํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๊ฐ’ ์ด ์ด์ „ Value "๋ฅผ ์œ ์ง€ํ•˜๋ ค๋Š” ๊ฒƒ์€ ์ปจํŠธ๋กค์ด ์ฑ…์ž„์ ธ์•ผ ํ•˜๋Š” ์ผ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ปจํŠธ๋กค์ด ๋‹จ์ผ ํ˜„์žฌ ๊ฐ’(๋˜๋Š” ์˜ค๋ฅ˜ ์ƒํƒœ)์„ ์ฒ˜๋ฆฌํ•˜๋„๋ก ํ•˜๊ณ  ์•ฑ์ด ValueChanged ์ด๋ฒคํŠธ๋ฅผ ํ†ตํ•ด ํ•„์š”์— ๋”ฐ๋ผ ์ถ”๊ฐ€ ๊ธฐ๋ก ์ฒ˜๋ฆฌ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.


์ดˆ๊ธฐ ๋ฒ„์ „์˜ ๊ฒฝ์šฐ ์œ„/์•„๋ž˜ ๋ฒ„ํŠผ์˜ ๋‹จ์ผ ์œ„์น˜๋ฅผ ์ง€์›ํ•˜๋Š” ๊ฒƒ์ด ํ•„์š”ํ•  ๊ฒฝ์šฐ ๋‹ค์‹œ ํ…œํ”Œ๋ฆฟํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ดœ์ฐฎ์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
Up/Down ๋ฒ„ํŠผ์˜ ์œ„์น˜๋ฅผ โ€‹โ€‹๊ฒฐ์ •ํ•˜๋Š” ๊ธฐ๋Šฅ์ด ํ•„์ˆ˜๋กœ ๊ฐ„์ฃผ๋˜๋Š” ๊ฒฝ์šฐ ์ถ”๊ฐ€๋˜๋Š” ๋ชจ๋“  ์—ด๊ฑฐํ˜•์€ UpDownButtonsEnabled ์†์„ฑ์„ ๊ฐ€์งˆ ํ•„์š”๋ฅผ ์ œ๊ฑฐํ•ด์•ผ ํ•˜๋ฉฐ ์—ด๊ฑฐํ˜• ๊ฐ’์€ Hidden ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
๋˜ํ•œ Up/Down ๋ฒ„ํŠผ์˜ ์œ„์น˜๋ฅผ โ€‹โ€‹์กฐ์ž‘ํ•˜๊ธฐ ์œ„ํ•œ ์ง€์› ๊ธฐ๋Šฅ์ด ๋‚ด์žฅ๋˜์–ด ์žˆ์œผ๋ฉด ์ œ๊ณต๋œ ์˜ต์…˜ ์ด์™ธ์˜ ํ•ญ๋ชฉ์— ๋Œ€ํ•ด ํ…œํ”Œ๋ฆฟ์„ ์กฐ์ •ํ•ด์•ผ ํ•˜๋Š” ์‚ฌ๋žŒ์ด ๋ณต์žกํ•ด์ง‘๋‹ˆ๋‹ค.

@shaheedmalik , ํ›Œ๋ฅญํ•˜๊ณ  ์ง๊ด€์ ์ธ ์•„์ด๋””์–ด์ž…๋‹ˆ๋‹ค. ์ŠคํŽ™์€ ํ™•์ธํ•˜์…จ๋‚˜์š”? ์ž…๋ ฅ์„ ๊ฐ€๋กœ์ฑ„์„œ ์ˆ˜๋™์œผ๋กœ ์ž…๋ ฅ๋œ ์ˆซ์ž๋ฅผ ์ˆซ์ž ๊ฐ’์œผ๋กœ ๊ตฌ๋ฌธ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ๋Š” ValueChanged ์ด๋ฒคํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํŠนํžˆ ํŠน์ • ์–ธ์–ด๋ฅผ ์—ผ๋‘์— ๋‘” ๊ฒฝ์šฐ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝํ—˜์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ปจํŠธ๋กค์˜ ๊ธฐ๋ณธ V1์—์„œ ์ „์—ญ ์–ธ์–ด ํŒŒ์„œ๋ฅผ ๊ตฝ๋Š” ๊ฒฝ์šฐ - @mdtauk ๊ฐ€ ๋งž์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ƒ๋‹นํ•œ ์ •๋‹น์„ฑ์„ ํ•„์š”๋กœ ํ•˜๋Š” ๋ณต์žก์„ฑ๊ณผ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ถ”๊ฐ€ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ปจํŠธ๋กค์„ ์˜คํ”ˆ ์†Œ์‹ฑํ•  ๋•Œ์˜ ์ด์ ์€ ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ๋ถ„๊ธฐํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์—ฌ๊ธฐ์—์„œ ์‚ฌ์šฉ์ž ๋˜๋Š” ๋‹ค๋ฅธ ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ตฌ์„ฑ์›์ด ์ด ์ปจํŠธ๋กค์˜ ์–ธ์–ด๋ณ„ ๋ณ€ํ˜•์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด NumberBox์˜ ์–ธ์–ด ํŒŒ์‹ฑ ๋ฒ„์ „์„ ๋ฏผ์ฃผํ™”ํ•˜๋Š” ๊ฐ€์žฅ ํ˜„์‹ค์ ์ธ ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@mrlacey , Windows ์ „์ฒด์—์„œ ์‚ฌ์šฉ๋˜๋Š” NumberBox์™€ ์œ ์‚ฌํ•œ ์ปจํŠธ๋กค ์— ๋Œ€ํ•œ @robloo ์˜ ๋น„๊ต ๋ถ„์„ ์„ ๊ฒ€ํ† ํ•  ๊ธฐํšŒ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๊นŒ? ์ด ํ•„๋“œ๋ฅผ ๋งˆ์ง€๋ง‰ ์œ ํšจํ•œ ์ˆซ์ž ์ „์šฉ ์ž…๋ ฅ์œผ๋กœ ์žฌ์„ค์ •ํ•˜๋Š” ๋™์ž‘์€ ์‹ค์ œ๋กœ ์‹œ์Šคํ…œ ์ „๋ฐ˜์— ๊ฑธ์ณ ์„ ๋ก€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์ปจํŠธ๋กค ์ž์ฒด ๋˜๋Š” ๊ฐœ๋ฐœ์ž ์ง€์นจ์ด ์ด ํŒจํ„ด์— ๋งž๊ฒŒ ์กฐ์ •๋˜์–ด์•ผ ํ•จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋‚ด ์˜๋„๋Š” ์ด ์ œ์–ด๋ฅผ ํ‘œ์ค€ Windows ํ™˜๊ฒฝ๊ณผ ์ผ๊ด€์„ฑ ์žˆ๊ฒŒ ์ •๋ ฌํ•˜๊ณ  ์ƒํƒœ๊ณ„์˜ ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„์—์„œ ๋ฒ—์–ด๋‚˜๋Š” ๋™์ž‘์„ ํ‘œ์ค€ํ™”ํ•˜๊ณ  ํ›„์ž๊ฐ€ ์ƒ์„ฑํ•  ์ด ์‹œ์Šคํ…œ ๊ธฐ๋ณธ ๋™์ž‘์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ์ง€์นจ์„ ์ฃผ์žฅํ•˜๋Š” ๊ฒƒ๊ณผ๋Š” ๋ฐ˜๋Œ€๋กœ ํ•„์š”ํ•œ ํŽธ์ฐจ์— ๋Œ€ํ•œ ๊ธธ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ ๊ฒฝ์šฐ์— ์‰ฝ๊ณ  ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ์˜๊ฒฌ ๋ถˆ์ผ์น˜๋ฅผ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๊ฒƒ์ด ํ†ต์ œ์— ๋ถˆํ•„์š”ํ•œ ๋ณต์žก์„ฑ์„ ์ถ”๊ฐ€ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ฑฐ๋‚˜ ์•„๋งˆ๋„ ์ด ์„ ๋ก€๋ฅผ ์žฌํ‰๊ฐ€ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค๋ฉด ์•Œ๋ ค์ฃผ์‹ญ์‹œ์˜ค.

| ์ œ๋ชฉ | ๊ทธ๋ฆผ | ๋Œ“๊ธ€ |
|---------|-----|------------|
| UWP OneNote ๊ธ€๊ผด ํฌ๊ธฐ ํ•ญ๋ชฉ |image | ๋ชจ๋“  ๊ฐ’์€ ํ‚ค๋ณด๋“œ์—์„œ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ž๋™์œผ๋กœ ์œ ํšจ์„ฑ์ด ๊ฒ€์‚ฌ๋˜๊ณ  ์ดˆ์ ์„ ์žƒ์€ ๊ฒฝ์šฐ ๋งˆ์ง€๋ง‰ ์œ ํšจํ•œ ๊ฐ’์œผ๋กœ ์žฌ์„ค์ •๋ฉ๋‹ˆ๋‹ค. |
| ๋ฐ์Šคํฌํƒ‘ ๋‹จ์–ด ๊ธ€๊ผด ํฌ๊ธฐ ํ•ญ๋ชฉ |image | ํ‚ค๋ณด๋“œ์—์„œ ๋ชจ๋“  ๊ฐ’์„ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ดˆ์ ์„ ์žƒ์œผ๋ฉด ์ž๋™์œผ๋กœ ์œ ํšจ์„ฑ์ด ๊ฒ€์‚ฌ๋˜๋ฉฐ ์œ ํšจํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. [ํ™•์ธ]์„ ํด๋ฆญํ•˜๋ฉด ๋งˆ์ง€๋ง‰ ์œ ํšจํ•œ ๊ฐ’์œผ๋กœ ์žฌ์„ค์ •๋ฉ๋‹ˆ๋‹ค. |
| UWP OneNote 2D ๊ทธ๋ž˜ํ”„ |image | ์–ด๋–ค ๊ฐ’์ด๋“  ํ‚ค๋ณด๋“œ์—์„œ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์œ ํšจํ•˜์ง€ ์•Š์€ ๊ฐ’์€ ๋ฌด์‹œ๋˜๊ณ  ๊ณ„์‚ฐ์— ๋งˆ์ง€๋ง‰ ์œ ํšจํ•œ ์ž…๋ ฅ์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค(์ดˆ์  ์ƒ์‹ค ์‹œ ์œ ํšจ์„ฑ์„ ๊ฒ€์‚ฌํ•˜์ง€ ์•Š์Œ). ์ฆ๊ฐ€ +/- ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ๋งˆ์ง€๋ง‰ ์œ ํšจํ•œ ์ž…๋ ฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. |
| ๋ฐ”ํƒ• ํ™”๋ฉด ๋‹จ์–ด ๋ชจ์–‘ ํฌ๊ธฐ ํ•ญ๋ชฉ |image | ํ‚ค๋ณด๋“œ์—์„œ ๋ชจ๋“  ๊ฐ’์„ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ดˆ์ ์„ ์žƒ์œผ๋ฉด ์ž๋™์œผ๋กœ ์œ ํšจ์„ฑ์ด ๊ฒ€์‚ฌ๋˜๊ณ  ์ดˆ์ ์„ ์žƒ์œผ๋ฉด ๋งˆ์ง€๋ง‰ ์œ ํšจํ•œ ๊ฐ’์œผ๋กœ ์žฌ์„ค์ •๋ฉ๋‹ˆ๋‹ค. |

@mdtauk , LTR ๋ฐ RTL ์–ธ์–ด์— ๋Œ€ํ•œ ๊ท€ํ•˜์˜ ์˜๊ฒฌ๊ณผ UpDownButtons๊ฐ€ ๋‚˜ํƒ€๋‚˜๋Š” ์ปจํŠธ๋กค ์ธก๋ฉด์— ์ฃผ๋ชฉํ•˜์‹ญ์‹œ์˜ค. ํ˜„์ง€ํ™” ์ „๋ฌธ๊ฐ€๊ฐ€ ์ด ์ž‘์—…์„ ์‹คํ–‰ํ•˜์—ฌ ์ด๊ฒƒ์ด ๊ณ ๋ คํ•ด์•ผ ํ•  ๊ณ ๋ ค ์‚ฌํ•ญ์ธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

@mrlacey ๋ถ€์šธ์ด ์—ด๊ฑฐ ํ˜•์— ์ค‘๋ณต๋œ๋‹ค๋Š” ๊ฒƒ๋„ ๋งž์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๊ตฌ์„ฑ์ด ํ•„์š”ํ•œ์ง€ ๊ณง ํ™•์ธํ•˜๋„๋ก ๋…ธ๋ ฅํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

@adriantetar , ๋‹น์‹ ์€ ์ˆ˜์ง ๋ฒ„ํŠผ์˜ ์ฃผ์š” ๊ณ ๊ฐ์ž…๋‹ˆ๋‹ค. ๊ณต๊ฐ„ ์ œ์•ฝ์„ ๋” ์ž˜ ์ดํ•ดํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ๋Š” ํ™”๋ฉด ์บก์ฒ˜๋‚˜ ์ปจํ…์ŠคํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? @mdtauk ์€ ์ด์ „์— ์ด ๋‹ต๋ณ€์œผ๋กœ ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.

์ดˆ๊ธฐ ์ƒ๊ฐ์€ ์ปจํ…Œ์ด๋„ˆ์˜ ์ˆซ์ž๊ฐ€ ์ˆ˜์ง ๋ฐฉํ–ฅ์ด ํ•„์š”ํ•œ ๊ณณ์—์„œ ์ถฉ๋ถ„ํžˆ ์ปค์งˆ ์ˆ˜ ์žˆ์„๊นŒ์š”? AutoCompleteBox๋Š” ๊ฒ€์ƒ‰ ๋ฒ„ํŠผ์„ ์›€์ง์ด์ง€ ์•Š์œผ๋ฉฐ ๋ฌธ์ž์—ด์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์ˆซ์ž๋ณด๋‹ค ๊น๋‹ˆ๋‹ค.

@SavoySchuler (์ตœ์ข… ๊ฐ’์œผ๋กœ ์žฌ์„ค์ •ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ด€๋ จํ•˜์—ฌ) ์‚ฌ์–‘์ด @robloo ๊ฒ€ํ† ์˜ ์ปจํŠธ๋กค๋ณด๋‹ค ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ ๋ฐ ๋ณด๊ณ ๋ฅผ ์œ„ํ•ด NumberBox์— ๋” ๋งŽ์€ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์„ ๋” ๋งŽ์ด ๋งŒ๋“ค๋ ค๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฑธ ๊ณ ๋ คํ•˜์„ธ์š”:

  1. AllowsCalculations=True NumberBox
  2. ์ˆ˜๋™์œผ๋กœ 1100์„ ์ž…๋ ฅํ•˜๊ณ  ๋‹ค์Œ ์ปจํŠธ๋กค๋กœ ํƒญ
  3. ์ด๊ฒƒ์ด ๋“ค์–ด๊ฐ€๊ณ ์ž ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹˜์„ ๊นจ๋‹ฌ์•„๋ผ
  4. ์ปจํŠธ๋กค๋กœ ๋Œ์•„๊ฐ€์„œ "99 x 12"๋ฅผ ์ž…๋ ฅํ•˜์‹ญ์‹œ์˜ค.
  5. ํƒญ์„ ๋‹ค์Œ ์ปจํŠธ๋กค๋กœ ์ด๋™ํ•˜๋ฉด ๊ฐ’์ด ๋‹ค์‹œ "1100"์„ ํ‘œ์‹œํ•˜๋„๋ก ๋˜๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค('x'๋Š” '*'์™€ ๊ฐ™์ง€ ์•Š์œผ๋ฏ€๋กœ ๊ณ„์‚ฐ ๋‹จ๊ณ„์—์„œ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค. ๋˜๋Š” 'x'๊ฐ€ ์‹คํŒจํ•˜๋ฉด ์‹คํŒจํ•˜๋Š” ๋‹ค๋ฅธ ์œ ํšจํ•˜์ง€ ์•Š์€ ๊ณ„์‚ฐ์„ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค. t ๋ˆ„๋ฅด๋ฉด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.)
  6. ์ด์ œ ๊ณ„์‚ฐ ๊ฒฐ๊ณผ๊ฐ€ ์•„๋‹Œ ๊ฐ’์ด ํ‘œ์‹œ๋˜๊ณ  ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋˜์ง€ ์•Š์œผ๋ฉฐ ์ž…๋ ฅ๋œ ํ•ฉ๊ณ„๊ฐ€ ์†์‹ค๋˜์–ด ๋ฐœ์ƒํ•œ ์ผ์— ๋Œ€ํ•œ ๊ธฐ๋ก์ด ์—†์Šต๋‹ˆ๋‹ค.

5๋‹จ๊ณ„์—์„œ ๋‹ค์Œ ์ปจํŠธ๋กค๋กœ ํƒญํ•  ๋•Œ ๋ฐœ์ƒํ•˜๊ณ  ์‹ถ์€ ์ผ์€

  • "99 x 12"๋Š” Text ๊ฐ’์œผ๋กœ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.
  • ์˜ค๋ฅ˜ ์ƒํƒœ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
  • ValueChanged ์ด๋ฒคํŠธ ํŠธ๋ฆฌ๊ฑฐ ๋ฐ ์ „๋‹ฌ๋จ(Text='99 x 12', OldValue=1100, NewValue=Double.NaN)
  • ๊ทธ๋Ÿฐ ๋‹ค์Œ ์‚ฌ์šฉ์ž๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ์ž๋Š” ์ „์ฒด ํ•ฉ๊ณ„๋ฅผ ๋‹ค์‹œ ์ž…๋ ฅํ•˜์ง€ ์•Š๊ณ ๋„ ๋ฌธ์ œ๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ฝ”๋“œ/์•ฑ ๋กœ์ง์€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ ์ ˆํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž…๋ ฅ ์‹œ ๋งˆ์ง€๋ง‰์œผ๋กœ ์•Œ๋ ค์ง„ ์–‘ํ˜ธํ•œ ๊ฐ’์œผ๋กœ ์ž๋™์œผ๋กœ ๋˜๋Œ๋ฆฌ๋ ค๋Š” ๊ฒฝ์šฐ:

  • ํ•„์ˆ˜ ํ•„๋“œ์— ๊ฐ’์„ ์ž…๋ ฅํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์™ธ์—๋Š” ์˜ค๋ฅ˜ ์ƒํƒœ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๊นŒ?
  • ValueChanged ์ด๋ฒคํŠธ๊ฐ€ ์ž˜๋ชป๋œ ์ƒํƒœ์— ๋Œ€ํ•ด ๋ณด๊ณ ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ ๊ฐ€์น˜๊ฐ€ ํฌ๊ฒŒ ์ค„์–ด๋“ค์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

@SavoySchuler @mrlacey ๋‹ค๋ฅธ Microsoft ์•ฑ์—์„œ ์ด๋Ÿฌํ•œ ์˜ˆ๋ฅผ ๋ณด๋ฉด...

๋ชจ๋‹ฌ ํŒ์—…์€ ์ œ์™ธ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€์‹  ์ด๊ฒƒ์€ ์ปจํŠธ๋กค ์ž์ฒด์˜ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ์ƒํƒœ์— ์˜ํ•ด ์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์˜์ƒ
image

์œ ํšจํ•˜์ง€ ์•Š์€ ๊ฐ’์ด ์žˆ๋Š” ๊ฒฝ์šฐ ๋‚ด์šฉ์€ ํ•ด๋‹น ์œ ํšจํ•˜์ง€ ์•Š์€ ์ƒํƒœ๋กœ ๋‚จ์•„ ์žˆ์–ด์•ผ ํ•˜์ง€๋งŒ ์ปจํŠธ๋กค์— ํฌ์ปค์Šค๊ฐ€ ์žˆ๋Š” ๋™์•ˆ์—๋งŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ํฌ์ปค์Šค๊ฐ€ ์†์‹ค๋˜๋ฉด ํ…์ŠคํŠธ ํ•„๋“œ ๊ฐ’์ด ๋˜๋Œ๋ ค์ง€์ง€๋งŒ ์œ ํšจ์„ฑ ํ™•์ธ ์•Œ๋ฆผ์—๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๋‚ด์šฉ์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๊นŒ?

InputScope: ์ˆซ์ž ๋˜๋Š” FormulaNumber?

์•ž์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด(PR ์˜๊ฒฌ์—์„œ) FormulaNumber ์—๋Š” ์—ฌ๊ธฐ์™€ ์‚ฌ์–‘์˜ ๋ชจ๋“  ๊ณ„์‚ฐ ์˜ˆ์ œ์— ํฌํ•จ๋œ '๊ณต๋ฐฑ'์ด ํฌํ•จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. FormulaNumber์—๋Š” ์ด ์ปจํŠธ๋กค์—์„œ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ์ˆ˜ํ•™ ๊ธฐํ˜ธ๋„ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” '์ˆซ์ž'์— ํˆฌํ‘œํ•œ๋‹ค

์ˆซ์ž
image

๊ณต์‹ ๋ฒˆํ˜ธ
image

@SavoySchuler ๋‚ด ๋ง์€ ๋ฐ์Šคํฌํ†ฑ ์•ฑ์„ ๋งŒ๋“ค๊ณ  ์žˆ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค(๋‚ด ์ž์‹ ์˜ Excel ๋ฒ„์ „์ด๋‚˜ ๋‹ค๋ฅธ ๊ฒƒ์„ ๋งŒ๋“ค๋ ค๊ณ  ํ•˜์ง€ ์•Š์Œ). ๋‚˜๋Š” ํ™”์‚ดํ‘œ๋ฅผ ์™„์ „ํžˆ ๋น„ํ™œ์„ฑํ™” ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์šฐ์Šค ๋“œ๋ž˜๊ทธ๋กœ ์ถฉ๋ถ„ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์šฐ์Šค ๋Œ๊ธฐ๊ฐ€ ๊ณ„ํš๋œ ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž๊ฐ€ ํ•ด๋‹น ๊ฒฝ์šฐ ๊ฐ€๋Šฅํ•œ ๋ณ€๊ฒฝ ๋ฒ”์œ„๋ฅผ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ๋ฅผ ์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ๋ณ€๊ฒฝ ์‹œ ๊ฐ’ ๋ณ€๊ฒฝ์ด ์‹คํ–‰๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์ด๋“œ๋ฐ”:

image

Btw TextBox ๋‚ด์šฉ์€ ์„ธ๋กœ๋กœ ์ค‘์•™์— ๋ฐฐ์น˜๋˜์ง€ ์•Š์œผ๋ฉฐ ์ด๋Š” VerticalContentAlignment="Center"์ž…๋‹ˆ๋‹ค.

Paint 3D๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ์†์„ฑ ์‚ฌ์ด๋“œ๋ฐ”์™€ ๋น„์Šทํ•ด ๋ณด์ž…๋‹ˆ๋‹ค(์ด๊ฒƒ๋„ ๋” ์–‡์€ ํ…Œ๋‘๋ฆฌ์™€ ์ ‘๋ฏธ์‚ฌ ์†์„ฑ์ฒ˜๋Ÿผ ๋ณด์ด๋Š” ์ž์ฒด ์ปจํŠธ๋กค ์Šคํƒ€์ผ์„ ์‚ฌ์šฉํ•จ).
image

๋“œ๋ž˜๊ทธ๊ฐ€ ๊ตฌํ˜„๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ํ•ญ์ƒ Paint 3D๊ฐ€ ์ˆ˜ํ–‰ํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์Šฌ๋ผ์ด๋”๋ฅผ NumberBox์— ๋ฐ”์ธ๋”ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
image

๋˜ํ•œ Adobe๊ฐ€ ์ปจํŠธ๋กค์— ๋“œ๋กญ๋‹ค์šด ์Šฌ๋ผ์ด๋”๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์—…๊ณผ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค.
image

@adrientetar ๊ฑฐ๊ธฐ์—์„œ ๊ณ ์œ ํ•œ ๋ฒ„์ „์˜ NumberBox๋ฅผ ๋งŒ๋“ค๊ณ  ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ธ€๊ผด์—๋Š” ๊ณ ๋ คํ•ด์•ผ ํ•  ๋””์„ผ๋”๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ TextBox์˜ ํ…์ŠคํŠธ์—๋Š” ๊ธฐ์ค€์„  ์ •๋ ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

NumberBox์˜ ๊ฒฝ์šฐ ๋ฌธ์ž๊ฐ€ ์‹œ๊ฐ์ ์œผ๋กœ ์ค‘์•™์— ๋ฐฐ์น˜๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์ง€๋งŒ ์ด๋Ÿฌํ•œ NumberBox๋Š” ComboBox์™€ ๊ฐ™์€ ํ‘œ์ค€ TextBox ๋˜๋Š” TextBox ํŒŒ์ƒ ์ปจํŠธ๋กค ์˜†์— ๋ฐฐ์น˜๋  ๋•Œ ์ •๋ ฌ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ํ…œํ”Œ๋ฆฟ ๋ฐ ์Šคํƒ€์ผ์„ ๋งŒ๋“ค ๋•Œ ๋‹ค์–‘ํ•œ Windows.UI.Xaml.Documents.Typography ์†์„ฑ์„ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค...

  • Typography.CaseSensitiveForms
  • Typography.NumeralAlignment + Typography.NumeralStyle(๋น„๋ก€๋ณด๋‹ค ํ‘œ ํ˜•์‹์ด ๋” ์ข‹์„ ์ˆ˜ ์žˆ์Œ)

@mrlacey , ๋‹น์‹ ์€ ์œ ํšจํ•œ ์ฃผ์žฅ์„ํ•ฉ๋‹ˆ๋‹ค. @adriantetar ์˜ ์‘๋‹ต์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋‹ค์Œ ์‹œ๋‚˜๋ฆฌ์˜ค๋Š”

๊ฐ’/ํ…์ŠคํŠธ ๋ณ€๊ฒฝ ์ด๋ฒคํŠธ๋Š” _every_ ๋ณ€๊ฒฝ ์‹œ ๋ฐœ์ƒํ•˜๋ฏ€๋กœ(๋“œ๋ž˜๊ทธ/์Šคํฌ๋กค ์‚ฌ์šฉ์ž๊ฐ€ ๋ฒ”์œ„๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ฒฝ์šฐ) ๋”ฐ๋ผ์„œ "Enter"๋ฅผ ๋ˆ„๋ฅด๊ฑฐ๋‚˜ ํฌ์ปค์Šค๋ฅผ ์žƒ์„ ๋•Œ๊นŒ์ง€ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€์™€ ํ‘œ์‹œ๊ธฐ๊ฐ€ ํ‘œ์‹œ๋˜๋Š” ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๊ฐ€ ๊ณ„์† ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๊ฐ’ ์žฌ์ •์˜๊ฐ€ ์‹œ์ž‘๋˜๊ณ  ๋งˆ์ง€๋ง‰ ์ข‹์€ ๊ฐ’์„ ๋ฎ์–ด์”๋‹ˆ๋‹ค(ํ•ด๋‹น ์†์„ฑ์— ์˜ํ•ด ํ•ด๋‹น ๋™์ž‘์ด ๋น„ํ™œ์„ฑํ™”๋˜์ง€ ์•Š๋Š” ํ•œ).

์ €๋Š” ์˜ค๋Š˜ ์˜คํ›„์— ํŒ€๊ณผ ์ฑ„ํŒ…ํ•˜์—ฌ ์ง€์†์ ์ธ ์ด๋ฒคํŠธ ๋ฐœ์ƒ/๊ฒ€์ฆ์ด ํ˜„์‹ค์ ์ธ ์•„์ด๋””์–ด์ธ์ง€ ๊ฒ€์ฆํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ๋ฒ”์œ„๋ฅผ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@mdtauk , ํ•˜์ง€๋งŒ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ์˜ ์‹œ๊ฐ์  ํ‘œํ˜„์— ๋Œ€ํ•œ ๊ท€ํ•˜์˜ ์ฃผ์žฅ์ด ์˜ณ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. @LucasHaines , ์ €๋ฅผ ๋‹ค์‹œ ํ™•์ธํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

@jevansaks , ์•„๋ž˜ InputScope ๊ณ ๋ ค ์‚ฌํ•ญ์— ๋ฌด๊ฒŒ๋ฅผ ์‹ค์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์•ž์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด(PR ์˜๊ฒฌ์—์„œ) FormulaNumber ์—๋Š” ์—ฌ๊ธฐ์™€ ์‚ฌ์–‘์˜ ๋ชจ๋“  ๊ณ„์‚ฐ ์˜ˆ์ œ์— ํฌํ•จ๋œ '๊ณต๋ฐฑ'์ด ํฌํ•จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. FormulaNumber์—๋Š” ์ด ์ปจํŠธ๋กค์—์„œ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ์ˆ˜ํ•™ ๊ธฐํ˜ธ๋„ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” '์ˆซ์ž'์— ํˆฌํ‘œํ•œ๋‹ค

์ˆซ์ž
image

๊ณต์‹ ๋ฒˆํ˜ธ
image

@SavoySchuler re this

๊ฐ’/ํ…์ŠคํŠธ ๋ณ€๊ฒฝ ์ด๋ฒคํŠธ๋Š” ๋ชจ๋“  ๋ณ€๊ฒฝ(๋“œ๋ž˜๊ทธ/์Šคํฌ๋กค ์‚ฌ์šฉ์ž๊ฐ€ ๋ฒ”์œ„๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ฒฝ์šฐ)์—์„œ ๋ฐœ์ƒํ•˜๋ฏ€๋กœ "Enter"๋ฅผ ๋ˆ„๋ฅด๊ฑฐ๋‚˜ ์ดˆ์ ์„ ์žƒ์„ ๋•Œ๊นŒ์ง€ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€์™€ ํ‘œ์‹œ๊ธฐ๊ฐ€ ํ‘œ์‹œ๋˜๋Š” ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๊ฐ€ ๊ณ„์† ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๊ฐ’ ์žฌ์ •์˜๊ฐ€ ์‹œ์ž‘๋˜๊ณ  ๋งˆ์ง€๋ง‰ ์ข‹์€ ๊ฐ’์„ ๋ฎ์–ด์”๋‹ˆ๋‹ค(ํ•ด๋‹น ์†์„ฑ์— ์˜ํ•ด ํ•ด๋‹น ๋™์ž‘์ด ๋น„ํ™œ์„ฑํ™”๋˜์ง€ ์•Š๋Š” ํ•œ).

ValueChanged ์ด๋ฒคํŠธ๋Š” Text ๋ณ€๊ฒฝ๋  ๋•Œ๋งˆ๋‹ค๊ฐ€ ์•„๋‹ˆ๋ผ ์‹ค์ œ Value ๋ณ€๊ฒฝ๋  ๋•Œ๋งŒ ๋ฐœ์ƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ•ด๋‹น ๋™์ž‘์ด ํ•ด๋‹น ์†์„ฑ์— ์˜ํ•ด ๋น„ํ™œ์„ฑํ™”๋˜์ง€ ์•Š๋Š” ํ•œ

์ด ์ƒˆ ์†์„ฑ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋งˆ์ง€๋ง‰์œผ๋กœ ์•Œ๋ ค์ง„ ์–‘ํ˜ธํ•œ ๊ฐ’์œผ๋กœ ๋˜๋Œ๋ฆด ๋•Œ ์ž˜๋ชป๋œ ๊ฐ’ ๋ฐ ์˜ค๋ฅ˜ ์ƒํƒœ๊ฐ€ ์†์‹ค๋˜๋Š” ๋ฌธ์ œ๋ฅผ ์–ผ๋งˆ๋‚˜ ์ž์ฃผ ์ด๋ฒคํŠธ๊ฐ€ ํ•ด๊ฒฐํ•˜๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.
์ด๊ฒƒ์ด ์‹ค์ œ๋กœ ์–ด๋–ค ๊ฒƒ์ธ์ง€ ์ดํ•ดํ•˜๋ ค๋ฉด ์—ฌ๊ธฐ์—์„œ ์•ฝ๊ฐ„์˜ ์‹คํ—˜์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. (์‹œ๊ฐ„๋งŒ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด...)

๊ด€๋ จ ๋ฉ”๋ชจ์—.

TextBox ์—์„œ ์ƒ์†๋œ ๊ธฐ์กด TextChanged ์ด๋ฒคํŠธ๊ฐ€ ์†Œ๋น„์ž๋ฅผ ์œ„ํ•ด ์ˆ˜์ •๋˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ TextChanging ์ด๋ฒคํŠธ๋Š” ์–ด๋–ป์Šต๋‹ˆ๊นŒ? ์ƒˆ๋กœ์šด ์ œ์–ด ํŠน์ • ์ฒ˜๋ฆฌ๊ฐ€ ์ˆ˜ํ–‰๋˜๋Š” ๊ณณ์ž…๋‹ˆ๊นŒ? ์ปจํŠธ๋กค์˜ ์†Œ๋น„์ž๋„ ์ด ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋™์˜ํ•จ - ํƒ์ƒ‰ํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์ง€๋งŒ ํ”ผํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹์Šต๋‹ˆ๋‹ค. ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ์„น์…˜์„ ์ˆ˜์ •ํ•˜๊ณ  ๊ธฐ๋ณธ์ ์œผ๋กœ ๋น„ํ™œ์„ฑํ™”๋˜์–ด ์žˆ๋Š” IsInvalidInputOverwrite ์†์„ฑ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋‘๊ฐ€ ๋‹ค์Œ์— ๋Œ€ํ•ด ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•ฉ๋‹ˆ๊นŒ?

  • ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ํ˜•์‹์ ์ด๊ฑฐ๋‚˜ ์ตœ์†Œ/์ตœ๋Œ€ ๊ฐ’์„ ์ดˆ๊ณผํ•˜๋Š” ์ž…๋ ฅ ์€
  • ๊ฐœ๋ฐœ์ž๋Š” ValueChanged ๋˜๋Š” TextChanged ์ด๋ฒคํŠธ(๋ณ€๊ฒฝ๋œ ์†์„ฑ๊ณผ ์—…๋ฐ์ดํŠธํ•  ์†์„ฑ์„ ๋…ธ์ถœํ•จ)๋ฅผ ๊ฐ€๋กœ์ฑ„๊ณ  ์ž…๋ ฅ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๊ฒฝ๊ณ  ๊ฐ€ ํ‘œ์‹œ๋˜๊ธฐ ์ „์— ์ž˜๋ชป๋œ ์ž…๋ ฅ์„ ์ˆ˜๋™์œผ๋กœ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • IsInvalidInputOverwrite ์†์„ฑ์„ ํ™œ์„ฑํ™”ํ•˜๋ฉด ์ž…๋ ฅ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๊ฒฝ๊ณ  ๋ฅผ ํ‘œ์‹œํ•˜์ง€ ์•Š๊ณ  ์ž˜๋ชป๋œ ์ž…๋ ฅ์„ ๋งˆ์ง€๋ง‰ ์œ ํšจํ•œ ์ƒํƒœ๋กœ ๋˜๋Œ๋ฆฝ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด IsInvalidInputOverwrite๊ฐ€ ํ™œ์„ฑํ™”๋˜๊ณ  StepSize=0.2, MaxValue=3.0์ด๊ณ  ๊ฐ’ 2.9๊ฐ€ ์ฆ๊ฐ€ํ•˜๋ฉด 3.1์ด ์œ ํšจํ•˜์ง€ ์•Š์€ ๊ฒƒ์œผ๋กœ ๋“ฑ๋ก๋˜๊ณ  2.9๋กœ ๋‹ค์‹œ ๋ฎ์–ด์”๋‹ˆ๋‹ค.

์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๊ฐ€ ์ž…๋ ฅ ์ „์ฒด์—์„œ ๋ฐœ์ƒํ•ด์•ผ ํ•˜๋Š”์ง€ ์•„๋‹ˆ๋ฉด ์ดํ›„์— ๋ฐœ์ƒํ•ด์•ผ ํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ์งˆ๋ฌธ์œผ๋กœ ์ด ์ค‘ ๋งŽ์€ ๋ถ€๋ถ„์„ ์š”์•ฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์„ฑ๋Šฅ์„ ์œ„ํ•ด ๊ทธ๋ฆฌ๊ณ  ์ž…๋ ฅํ•  ๋•Œ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ๋ฐ›๋Š” ๊ฒฝํ—˜์ด ๊ฑฐ์Šฌ๋ฆฌ๊ณ  ์ ‘๊ทผํ•˜๊ธฐ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์œ„์˜ ๋‚ด์šฉ์„ ํ˜„์žฌ ์„ ํ˜ธํ•˜๋Š” ๊ตฌํ˜„์œผ๋กœ ์ด๋•๋‹ˆ๋‹ค.

FWIW, Adobe Photoshop ๋ฐ Illustrator๋Š” ์ž˜๋ชป๋œ ๊ฐ’์„ ์ž…๋ ฅํ•˜๋ ค๊ณ  ํ•˜๋ฉด ์ด์ „ ๊ฐ’์œผ๋กœ ๋˜๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ๊ณ„์‚ฐ ๋™์ž‘์ด ์žˆ์ง€๋งŒ ์ธก์ • ๋‹จ์œ„ ์ ‘๋ฏธ์‚ฌ๋Š” ํ…์ŠคํŠธ์˜ ์ผ๋ถ€์ด๋ฉฐ ๊ทธ ์ž์ฒด๋กœ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. :)

๋‚ด ์ž์‹ ๊ณผ ์ถฉ๋Œํ•˜๋Š” ์•„์ด๋””์–ด๋ฅผ ๋˜์ง€๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ „์˜ ๋งŽ์€ ๊ฒฝํ—˜์—์„œ ์ฆ๊ฐ/๊ฐ์†Œ ๊ธฐ๋Šฅ์ด ์žˆ๋Š” ์ •๋ ฌ ๋ฒˆํ˜ธ ์ƒ์ž๊ฐ€ ์žˆ์—ˆ๋˜ ๊ฒƒ์„ ๊ธฐ์–ตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ๋ฐ˜๋Œ€. _ValuesWrap_ ์†์„ฑ๊ณผ ๊ฐ™์€ ๊ฒƒ์ด ์—ฌ๊ธฐ์—์„œ ์˜๋ฏธ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋ถ„๋ช…ํžˆ ๋ชจ๋“  ๊ฒฝ์šฐ์— ์˜๋ฏธ๊ฐ€ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ ์ œํ•œ๋œ ์ˆซ์ž ๋ฒ”์œ„์˜ ๊ฒฝ์šฐ ๊ณผ๊ฑฐ์—๋Š” Age ๋˜๋Š” DateOfBirth ํ•ญ๋ชฉ ๋˜๋Š” ๊ธฐํƒ€ ์ž‘์€ ๋ฒ”์œ„์˜ ๊ฒฝ์šฐ์™€ ๊ฐ™์€ ๊ฒฝ์šฐ์— ์ˆซ์ž๊ฐ€ ์ค„ ๋ฐ”๊ฟˆ๋˜๋Š” ๊ฒƒ์œผ๋กœ ๊ฐ€์ •ํ•˜๋Š” ๊ฒƒ์ด ์ง๊ด€์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด์— ์ด ๊ฒฝ์šฐ ๊ฐ๊ด€์‹ ์„ ํƒ ์ƒ์ž๊ฐ€ ์‚ฌ์šฉ๋˜๊ณ  ์ผ๋ฐ˜์ ์œผ๋กœ ์ค‘์ง€ํ•˜๋Š” ๋Œ€์‹  ๊ฐ’์„ ๋ž˜ํ•‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฌํ•œ ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ •๋‹น์„ฑ์ด๋‚˜ ํ•„์š”์„ฑ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์ถ”๊ฐ€ ์ž‘์—…์œผ๋กœ onValueChanged ์ด๋ฒคํŠธ๋ฅผ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž ์ธก์—์„œ ๊ตฌํ˜„ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

cc @SavoySchuler

๋ฉ‹์ง„ ์•„์ด๋””์–ด, @KevinTXY. ์—ฌ๊ธฐ์— ์žˆ๋Š” ๊ฐœ๋ฐœ์ž ์ค‘ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๊ทธ๋Ÿฐ ๊ฒƒ์„ ํ•„์š”๋กœ ํ•˜๋Š” ๊ฒฝ์šฐ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

์งˆ๋ฌธ ์‹œ๊ฐ„: 16์ง„์ˆ˜ ๋˜๋Š” 2์ง„์ˆ˜ ์ง€์›์ด ํ•„์š”ํ•œ ์‹ค์ œ ์•ฑ ์‹œ๋‚˜๋ฆฌ์˜ค๊ฐ€ ์žˆ๋Š” ์‚ฌ๋žŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์ตœ๋Œ€/์ตœ์†Œ ๊ฐ’์„ ๋ž˜ํ•‘ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

ValueWrap ์†์„ฑ๊ณผ ๊ฐ™์€ ๊ฒƒ์ด ์—ฌ๊ธฐ์—์„œ ์˜๋ฏธ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ, ๊ฐ๋„ ์†์„ฑ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ 359 โ†’ 0, ๊ธฐ๋ณธ์ ์œผ๋กœ mod 360์œผ๋กœ ๊ฐ€๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์žฌ๋ฏธ์žˆ๋Š” ์ ์€ MaxValue๊ฐ€ ํฌ๊ด„์ ์ผ ์ˆ˜๋งŒ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ปจํŠธ๋กค(Qt์— ์žˆ์Œ)์„ ํ•˜์œ„ ํด๋ž˜์Šค๋กœ ๋ถ„๋ฅ˜ํ•ด์•ผ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— 359 ๋˜๋Š” 360, ๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ์ •๋ง๋กœ 359.99๋ฅผ ์“ธ ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ์›ํ–ˆ์ง€๋งŒ 360์€ ์“ธ ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค(์ฆ‰, ๋‚˜๋Š” โ‰ค์ด ์•„๋‹ˆ๋ผ <๋ฅผ ์›ํ–ˆ์Šต๋‹ˆ๋‹ค).

QSpinBox์—๋Š” ํ•ด๋‹น ๋ชฉ์ ์„ ์œ„ํ•œ ๋ž˜ํ•‘ ์†์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. https://doc.qt.io/qt-5/qabstractspinbox.html#wrapping -prop

@SavoySchuler 16์ง„์ˆ˜์™€ ๊ด€๋ จํ•˜์—ฌ 16์ง„์ˆ˜ ํŽธ์ง‘๊ธฐ๊ฐ€ ๊ทธ๊ฒƒ์„ ์›ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ์ •๋ง ํ‹ˆ์ƒˆ ์‚ฌ์šฉ ์‚ฌ๋ก€์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๊ฒƒ์„ ์ง€์›ํ•  ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค. ์ปจํŠธ๋กค์ด ํ•˜์œ„ ํด๋ž˜์Šคํ™”ํ•˜๊ธฐ ์‰ฌ์šด์ง€ ํ™•์ธํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. Qt์—์„œ ์ปจํŠธ๋กค์—๋Š” ํ…์ŠคํŠธ ์ƒ์ž ๋ฌธ์ž์—ด์„ ์žฌ์ •์˜ํ•  ์ˆ˜ ์žˆ๋Š” ์ˆซ์ž ๊ฐ’(int ๋˜๋Š” double)์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด IsInvalidInputOverwrite๊ฐ€ ํ™œ์„ฑํ™”๋˜๊ณ  StepSize=0.2, MaxValue=3.0์ด๊ณ  ๊ฐ’ 2.9๊ฐ€ ์ฆ๊ฐ€ํ•˜๋ฉด 3.1์ด ์œ ํšจํ•˜์ง€ ์•Š์€ ๊ฒƒ์œผ๋กœ ๋“ฑ๋ก๋˜๊ณ  2.9๋กœ ๋‹ค์‹œ ๋ฎ์–ด์”๋‹ˆ๋‹ค.

์ด ๊ฒฝ์šฐ MaxValue๋กœ ๊ณ ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@Savoyschler @xyzzer @mrlacey ํŠธ์œ„ํ„ฐ์—์„œ 20H1์— ์˜ˆ์ธก ํ…์ŠคํŠธ ์ž…๋ ฅ์„ ์ œ๊ณตํ•˜๋Š” ๋ฌด์–ธ๊ฐ€๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์šฐ๋ฆฌ๊ฐ€ ์ด์•ผ๊ธฐํ•œ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์™„์„ฑ ๊ธฐ๋Šฅ์„ ๋ฐฉํ•ดํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ NumberBox ์ปจํŠธ๋กค์—์„œ ์–ต์ œํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. Win32 ๋ฐ XAML ์ปจํŠธ๋กค์— ์˜ค๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค ...

https://twitter.com/thebookisclosed/status/1137012461616488448?s=20

image

16์ง„์ˆ˜ ๋˜๋Š” 2์ง„์ˆ˜๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ „ํ™” ๋ฒˆํ˜ธ ๋ฐ ์šฐํŽธ ๋ฒˆํ˜ธ์™€ ๊ฐ™์€ "์ˆซ์ž์ฒ˜๋Ÿผ ๋ณด์ด๋Š” ๋ฌธ์ž์—ด"์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๋” ์ „๋ฌธํ™”๋œ ์‹œ๋‚˜๋ฆฌ์˜ค๋ผ๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. (๊ทธ๋ฆฌ๊ณ  ์ž์‹ ์˜ ๋ณต์žก์„ฑ์„ ๊ฐ€์ ธ์˜ด)
๋”ฐ๋ผ์„œ NumberBox ์ปจํŠธ๋กค์˜ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚˜์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋ฏธ๋ฆฌ๋ณด๊ธฐ ๊ณ„์‚ฐ ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด ๋งํ•˜์ž๋ฉด, ๋†“์นœ ๊ฒฝ์šฐ๋ฅผ ๋Œ€๋น„ํ•˜์—ฌ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ผœ๊ธฐ/๋„๊ธฐ ์„ ํƒ๊ถŒ์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์•„๋งˆ๋„ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์†์„ฑ์„ ์ถ”๊ฐ€ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

public bool ShowPreviewResult { get; set; }

๋ฏธ๋ฆฌ๋ณด๊ธฐ ๊ฒฐ๊ณผ๋ฅผ ํ‘œ์‹œํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๐Ÿค” ์‚ฌ์šฉ์ž๊ฐ€ ๊ฒฐ๊ณผ์— ๋”ฐ๋ผ ์ˆ˜์‹์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ์•Œ๋ฉด ๋ฐ”๋กœ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

๋ฏธ๋ฆฌ๋ณด๊ธฐ ๊ฒฐ๊ณผ๋ฅผ ํ‘œ์‹œํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๐Ÿค” ๊ฒฐ๊ณผ์— ๋”ฐ๋ผ ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•˜๋Š” ๊ฒƒ๊ณผ ๋‹ฌ๋ฆฌ ์›ํ•˜๋Š” ๊ฒƒ์„ ์•ˆ๋‹ค๋ฉด ๋ฐ”๋กœ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

์ปจํŠธ๋กค์˜ ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜๋Š” 128๋กœ ํ•ด์„๋˜๋Š” 32 * 4 ์™€ ๊ฐ™์ด ๊ณ„์‚ฐ์— ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๊ธฐ๋Šฅ์€ ์ปจํŠธ๋กค์ด ํฌ์ปค์Šค๋ฅผ ์žƒ๊ฑฐ๋‚˜ Enter ํ‚ค๋ฅผ ๋ˆŒ๋ €์„ ๋•Œ ๊ฒฐ๊ณผ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

@adrientetar ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋Š” ํ˜„์žฌ ์ž ์ •์ ์ธ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ์ปจํŠธ๋กค์˜ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๊ฐ€ ์‹œ์ž‘๋˜๊ธฐ ์ „์— ๊ฐ’์ด ๋ถ€๋ถ„์ ์œผ๋กœ ์‚ฌ์šฉ์ž ์ง€ํ–ฅ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ์— ์žˆ์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ: ๊ธฐ๋Œ€ ํ™•์ธ("๋”ํ•˜๊ธฐ ๋Œ€์‹  ์‹œ๊ฐ„์„ ์ณค๋‚˜์š”?"). ์—ฌ๊ธฐ์— ์ด์ž ๋ฐ ํˆฌ์ž ์ˆ˜์ต์ด ์•„์ง ๋ช…ํ™•ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‹ค์‹œ ํ•œ ๋ฒˆ ํ”ผ๋“œ๋ฐฑ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„! ํ˜„์žฌ๋กœ์„œ๋Š” 2์ง„ ๋˜๋Š” 16์ง„ ์ง€์›์— ๋Œ€ํ•œ ๊ธด๊ธ‰ํ•œ ํ•„์š”๋‚˜ ๊ด€์‹ฌ์ด ์—†๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ํ•„์š”์— ๋”ฐ๋ผ ํ•˜์œ„ ๋ถ„๋ฅ˜๋˜๊ฑฐ๋‚˜ ์ƒˆ๋กœ์šด ์ปจํŠธ๋กค๋กœ ์ œ์•ˆ๋˜๊ฑฐ๋‚˜ V2์— ๋Œ€ํ•ด ์ œ์•ˆ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@SavoySchuler ๋Š” "16์ง„์ˆ˜ ๋˜๋Š” ์ด์ง„์ˆ˜์— ๋Œ€ํ•œ ์ง€์›์ด ํ•„์š”ํ•œ ๊ฒƒ์„ ์ •๋‹นํ™”ํ•˜๋Š” ์‹ค์ œ ์•ฑ ์‹œ๋‚˜๋ฆฌ์˜ค๊ฐ€ ์žˆ๋Š” ์‚ฌ๋žŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ?"์™€ ๊ด€๋ จํ•˜์—ฌ WinUI์˜ ์ž์ฒด ColorPicker ์ปจํŠธ๋กค์„ ์˜ˆ๋กœ ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” 16์ง„์ˆ˜ ์ž…๋ ฅ ์ƒ์ž๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์—ฌ๋Ÿฌ ๋‹ค๋ฅธ ์ˆซ์ž ์ž…๋ ฅ TextBox๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ ์ปจํŠธ๋กค์˜ ์œ ํšจ์„ฑ์„ ๊ฒ€์‚ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์ƒˆ โ€‹โ€‹NumberBox ์ปจํŠธ๋กค์„ ์‚ฌ์šฉํ•˜๋„๋ก ColorPicker๋ฅผ ์—…๋ฐ์ดํŠธํ•  ๊ฐ€๋Šฅ์„ฑ์„ ์กฐ์‚ฌํ•ด ๋ณผ ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. NumberBox๊ฐ€ ColorPicker์˜ ํ˜„์žฌ ๊ตฌํ˜„์„ ๋‹จ์ˆœํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ๊ทธ๊ฒƒ์ด ์Šน๋ฆฌ๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ…์ŠคํŠธ ์ƒ์ž์˜ ๋” ์–‡์€ ํ…Œ๋‘๋ฆฌ ์Šคํƒ€์ผ์ด @chigy ๋ฐ WinUI ๋””์ž์ธ ํŒ€์˜ ์˜์‚ฌ ๊ฒฐ์ •์„ ํ†ต๊ณผํ•˜์ง€ ๋ชปํ•œ ๊ฒฝ์šฐ - ํ…์ŠคํŠธ ์ƒ์ž ๋””์ž์ธ์— ๋Œ€ํ•œ ํ˜„์žฌ ์ œ์•ˆ๊ณผ ์ผ์น˜ํ•˜๋Š” ๋””์ž์ธ ๋ชฉ์—…์„ ์ค€๋น„ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.

number box - uwp styled

@kmahone - ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋Š˜ ์•„์นจ ์ •์ˆ˜๊ธฐ์—์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด TextBox + ๋กœ์ปฌ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๋…ผ๋ฆฌ์˜ ์ธ์Šคํ„ด์Šค๋ฅผ NumberBox๋กœ ๊ต์ฒดํ•˜์—ฌ ColorPicker์—์„œ ๋งŽ์€ ์ฝ”๋“œ๋ฅผ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ๊ทธ ์ž์ฒด๋กœ ์Šน๋ฆฌ๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@mdtauk - ๋‹น์‹ ์˜ ๋ชฉ์—…์ด ๋ฏฟ์„ ์ˆ˜ ์—†์„ ์ •๋„๋กœ

@SavoySchuler Windows ๋””์ž์ธ ํŒ€์ด Fabric ์›น ํŒ€์˜ ํŽธ์— ์„œ์„œ 2epx ๋‘๊ป˜์˜ ํ…Œ๋‘๋ฆฌ์—์„œ 1epx ํ…Œ๋‘๋ฆฌ๋กœ ์ด๋™ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๋‹ค๋ฉด NumberBox์™€ ๊ฐ€์žฅ ์ž˜ ์ž‘๋™ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ์‹ค์šฉ์ ์ด๋ผ๋ฉด Windows ๋””์ž์ธ ํŒ€์ด ํŒŒํ—ค์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์˜ ๋ฐœ ๋’ค๊ฟˆ์น˜๋ฅผ ๋„ฃ๊ณ  ๋” ๋‘๊บผ์šด ํ…Œ๋‘๋ฆฌ๋ฅผ ์œ ์ง€ํ•˜์‹ญ์‹œ์˜ค.

๋ฌผ๋ก ์ด์ฃ , @mdtauk! ์กฐ๋งŒ๊ฐ„ @KevinTXY์— ๋Œ€ํ•œ ๊ธฐ๋Šฅ ์š”๊ตฌ ์‚ฌํ•ญ์„ @chigy (#524์—์„œ ๋†€๋ผ์šด ์ผ์„ ํ•˜๋Š๋ผ ๋ฐ”๋นด๋˜)์™€์˜ ๋””์ž์ธ ์ปจ๋ฒ„์ „์Šค ๋Œ€ํ™”๋กœ

๋ชจ๋“  ํ† ๋ก ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ด๋ฒˆ ์—ฌ๋ฆ„์— ์ธํ„ด์œผ๋กœ ์ด ๊ธฐ๋Šฅ์„ ์ž‘์—…ํ•˜๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค!

๋ˆ„๊ตฐ๊ฐ€์™€ ๊ด€๋ จ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ๋‹ค์Œ ์ €์žฅ์†Œ์—์„œ ์ปจํŠธ๋กค์˜ C# ํ”„๋กœํ† ํƒ€์ž…์„ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.
https://github.com/KevinTXY/NumberBox

์ด๊ฒƒ์€ ๋ณธ์งˆ์ ์œผ๋กœ ์ฒ˜์Œ์œผ๋กœ C#/UWP๋ฅผ ๋ฐฐ์šฐ๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ์ฒœ์ฒœํžˆ ๋”ฐ๋ผ๊ฐˆ ๊ฒƒ์ด๊ณ  ๋ˆ„๊ตฐ๊ฐ€ ๊ทธ๊ฒƒ์„ ๋ณด๋ฉด ๋” ์ž˜ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค!

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ์ด ๋Œ€๋žต์ ์œผ๋กœ ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค.

  • ์ˆซ์ž ์ž…๋ ฅ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ(์•„์ง ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ์ œ์•ˆ ์‚ฌ์–‘์„ ๋”ฐ๋ฅด์ง€ ์•Š์Œ, ์ฝ”๋“œ์—์„œ ๋Œ€๊ธฐํ•จ)
  • ๊ฐ€์น˜ ์ €์žฅ/๊ฒฐํ•ฉ
  • ์ œ๋กœ ํŠธ๋ฆฌ๋ฐ
  • ์ „์ฒด ๊ณ„์‚ฐ๊ธฐ/์ˆ˜์‹ ์ž…๋ ฅ ์ง€์›

ํ˜„์žฌ ์Šคํ”ผ๋„ˆ ๋ฒ„ํŠผ ๋ฐ ํ…Œ์ŠคํŠธ ์•ฑ ํ•ญ๋ชฉ ๋ฐ ์ตœ์†Œ/์ตœ๋Œ€ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ์ž‘์—…์„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฑด๋ฐฐ!

ํƒ€์ž„๋ผ์ธ ์—…๋ฐ์ดํŠธ!

๋‚˜๋Š” ์˜ค๋Š˜(๋ชฉ์š”์ผ) WinUI ํŒ€๊ณผ ํ•จ๊ป˜ ๊ฒ€์ฆํ•  ์‚ฌ์–‘์— ๋ช‡ ๊ฐ€์ง€ ์—…๋ฐ์ดํŠธ, ์ œ์•ˆ ๋ฐ ํ”ผ๋“œ๋ฐฑ์„ ํ†ตํ•ฉํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ํ•จ์œผ๋กœ์จ V1์— ๋Œ€ํ•œ API ๋ฐ ํ–‰๋™ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์–ด๋Š ์ •๋„ ๋งˆ๋ฌด๋ฆฌํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์ด์ œ ์ž…๋ ฅ ๋ฐ ์ ‘๊ทผ์„ฑ, ๋ฐ์ดํ„ฐ ๋ฐ ์ธํ…”๋ฆฌ์ „์Šค, ์‹œ๊ฐ์  ๊ตฌ์„ฑ ์š”์†Œ๋กœ ์ด๋™ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰ ๋‹จ๊ณ„๋Š” ๋ฌธ์„œ๋ฅผ ์ •๋ฆฌํ•˜๊ณ  ์ง€์นจ์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Microsoft์˜ ํผ์ŠคํŠธ ํŒŒํ‹ฐ ์•ฑ/์…ธ UI๊ฐ€ WPF ๋˜๋Š” Win32์—์„œ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ์—†์œผ๋ฉด ์—ฐ๊ฒฐ๋˜์ง€ ์•Š๊ณ  ์—ฐ์†์ ์ธ ์˜ต์…˜์ด ๋งค์šฐ ํ‹ˆ์ƒˆ ์‹œ์žฅ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

ํฌํ•จํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์˜ต์…˜๋ณด๋‹ค๋Š” ์ปจํŠธ๋กค์— ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํฌํ•จ๋œ ์Šคํƒ€์ผ์ด ๋˜์—ˆ์œผ๋ฉด ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์‹œ ํ…œํ”Œ๋ฆฟํ™”๋œ NumberBox ์ปจํŠธ๋กค์€ ์ƒˆ ํ…œํ”Œ๋ฆฟ์—์„œ ํ•ด๋‹น ์†์„ฑ์„ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ• ๊นŒ์š”?

์ด ๋ชจ๋“œ๊ฐ€ ํฌํ•จ๋˜์–ด์•ผ ํ•œ๋‹ค๋Š” ํ•ฉ์˜๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ SpinButtonPlacementMode ์˜ ์ผ๋ถ€๋กœ ์—ด๊ฑฐํ˜• ๊ฐ’์ด ๋˜๋„๋ก ์ œ์•ˆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์˜ต์…˜์˜ ์ด๋ฆ„์ด ๋ฌด์—‡์ธ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. _Straddled_๋Š” ์•„๋งˆ๋„ ์ถฉ๋ถ„ํžˆ ์ „๋ฌธ์ ์ด์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  _Bookended_๊ฐ€ ๋” ๋‚˜์€์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

Edge์˜ ์ตœ์‹  Canary ๋นŒ๋“œ๋ฅผ ๋ณด๊ณ  ์žˆ์—ˆ๋Š”๋ฐ NumberBox ์ปจํŠธ๋กค์— ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด <input type="number"/> ์˜ ๋””์ž์ธ์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค.
image
์ด ์ด๋ฏธ์ง€๋ฅผ ๊ณต์œ ํ•ด์•ผ๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.

@mdtauk - ๋™์˜, SpinButtonPlacementMode๋Š” ๋Œ€์ฒด SpinButton ๋ฐฐ์น˜ ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•˜๊ธฐ์— ์ ํ•ฉํ•œ ์žฅ์†Œ์ž…๋‹ˆ๋‹ค.

์ด๋ฆ„ ์ฃผ์ œ์— ๋Œ€ํ•ด @Felix-Dev๋Š” SpinButton์ด ๊ฐ€์žฅ ์ง๊ด€์ ์ด๊ฑฐ๋‚˜ ์ž˜ ์•Œ๋ ค์ง„ ์ด๋ฆ„์ด ์•„๋‹ ์ˆ˜ ์žˆ๋‹ค๋Š” ์‚ฌ์–‘์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋‚˜ํƒ€๋ƒˆ์Šต๋‹ˆ๋‹ค. SpinBox ๋ฐ UpDownButtons๋„ Windows ์ƒํƒœ๊ณ„์—์„œ ์šฐ์„ ํ•ฉ๋‹ˆ๋‹ค. ๊ณง ๋” ์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ฒ ์ง€๋งŒ ์ด๋Ÿฌํ•œ ์˜ต์…˜์— ๋ฐ˜๋Œ€ํ•˜๋Š” ์‚ฌ๋žŒ์ด ์žˆ์œผ๋ฉด ์•Œ๋ ค์ฃผ์„ธ์š”.

@mdtauk - ๊ณต์œ ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ๋‚˜๋Š” Canary๋„ ์‹คํ–‰ ์ค‘์ด๋ฏ€๋กœ ์šฐ๋ฆฌ๊ฐ€ ๋ฐฐ์šธ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ์žˆ๋Š”์ง€ ๋˜๋Š” ๊ฐœ๋ฐœ์„ ์กฐ์ •ํ•˜๋Š” ๊ฒƒ์„ ์ œ์•ˆํ•  ์—ฌ์ง€๊ฐ€ ์žˆ๋Š”์ง€ ์‚ดํŽด๋ณด๊ณ  ํ™•์ธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!

@SavoySchuler Fluent Controls ํ”Œ๋ž˜๊ทธ ํ™œ์„ฑํ™”(์‹คํ—˜์  ์ปจํŠธ๋กค ํฌํ•จ)๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

WinUI ๊ตฌํ˜„์€ Fabric Web๊ณผ Edge๊ฐ€ ์‚ดํŽด๋ณด์•„์•ผ ํ•˜๋Š” ๋ณด๋‹ค ์‹ ์ค‘ํ•œ ๋””์ž์ธ์ด ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ์ •๋ ฌ์€ ์ข‹์€ ์ผ์ž…๋‹ˆ๋‹ค.

w3schools ์ž…๋ ฅ ์œ ํ˜• ๋ฒˆํ˜ธ

๋˜ํ•œ ํ•ด๋‹น ์Šฌ๋ผ์ด๋”๋Š” WinUI๊ฐ€ ๊ณ„ํšํ•˜๋Š” ๊ฒƒ๊ณผ ๋น„์Šทํ•˜์ง€๋งŒ ์™„์ „ํžˆ ๊ฐ™์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค(์ฑ„์›Œ์ง„ ์› ์ธ๊ณผ ๋น„๊ตํ•˜์—ฌ ์œค๊ณฝ์„ ์ด ์žˆ๋Š” ์› ์ธ)

ํ˜„์ง€ํ™” ๊ธฐ๋Šฅ์„ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•„์ง ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฏธ๊ตญ์—์„œ๋Š” ์†Œ์ˆ˜์  ๊ตฌ๋ถ„ ๊ธฐํ˜ธ๋กœ ์ ์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์‚ฌ๋Š” ๋„ค๋œ๋ž€๋“œ์—์„œ๋Š” ์‰ผํ‘œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ฏธ๊ตญ์—์„œ๋Š” ๊ทธ๋ฃนํ™” ๊ตฌ๋ถ„ ๊ธฐํ˜ธ๊ฐ€ ์‰ผํ‘œ์ด์ง€๋งŒ ๋„ค๋œ๋ž€๋“œ์—์„œ๋Š” ์ ์ž…๋‹ˆ๋‹ค.

์˜ˆ์‹œ:
image

Framework ์š”์†Œ์˜ Language ์†์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ Digit ๋ฐ Grouping ๊ตฌ๋ถ„ ๊ธฐํ˜ธ๋ฅผ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

<StackPanel Spacing="12" Padding="12" Width="200">
    <NumberBox Header="Dollar (US)"
               Value="1234.56"
               FractionDigits="2"
               Language="en-US" />
    <NumberBox Header="Euro (Netherlands)"
               Value="2345.67"
               FractionDigits="2"
               Language="nl-NL"/>
</StackPanel>

Edge์˜ ์ตœ์‹  Canary ๋นŒ๋“œ๋ฅผ ๋ณด๊ณ  ์žˆ์—ˆ๋Š”๋ฐ NumberBox ์ปจํŠธ๋กค์— ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด <input type="number"/> ์˜ ๋””์ž์ธ์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค.
image
์ด ์ด๋ฏธ์ง€๋ฅผ ๊ณต์œ ํ•ด์•ผ๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.

@mdtauk , @SavoySchuler ,
์ด ์ปจํŠธ๋กค์ด ์–ด๋””์—์„œ ์™”๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. Edge ํŒ€์˜ ๋‚ด ์—ฐ๋ฝ์ฒ˜์— ๋”ฐ๋ฅด๋ฉด ๋‹ค์Œ์€ ๊ทธ๋“ค์ด ์‚ฌ์šฉํ•  ์ปจํŠธ๋กค์ž…๋‹ˆ๋‹ค.

์Šฌ๋ผ์ด๋”: https://explore.fastdna.net/components/slider/
์ˆซ์ž ์ƒ์ž: https://explore.fastdna.net/components/number-field/

๊ทธ๋“ค์ด ๋น„์ฃผ์–ผ์„ ์—…๋ฐ์ดํŠธํ•  ๊ฒƒ์ธ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š๊ณ  ์ตœ์ข… ์ถœ๋ ฅ์ด ์ •ํ™•ํžˆ ์ด์™€ ๊ฐ™์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค(๊ทธ๋ ‡๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ์ œ ์ถ”์ธก์ž…๋‹ˆ๋‹ค).

@chigy ๊ทธ ์ด๋ฏธ์ง€๋Š” Edge์˜ ํ˜„์žฌ Canary ๋นŒ๋“œ์—์„œ ๊ฐ€์ ธ์˜จ ๊ฒƒ์ด์ง€๋งŒ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด WIP์ด๋ฉฐ ์„ค์ •ํ•˜๋Š” ์„ ํƒ์  ํ”Œ๋ž˜๊ทธ์ž…๋‹ˆ๋‹ค.

์ด์ „ ํ˜ธ์—์„œ ์–ธ๊ธ‰ํ•œ fastdna ํ”„๋กœ์ ํŠธ๊ฐ€ ๋ฌด์—‡์„ ์œ„ํ•œ ๊ฒƒ์ธ์ง€ ์„ค๋ช…ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๐Ÿ™‚

Framework ์š”์†Œ์˜ Language ์†์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ Digit ๋ฐ Grouping ๊ตฌ๋ถ„ ๊ธฐํ˜ธ๋ฅผ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

์ด๋Ÿฌํ•œ ์„ค์ •์€ ์ผ๋ฐ˜์ ์œผ๋กœ "์˜์—ญ"์—์„œ ๊ฐ€์ ธ ์˜ค๋ฏ€ ๋กœ

DecimalFormatter API์—์„œ ๊ตฌ๋ถ„ ๋ฌธ์ž๋ฅผ ์‚ฌ์šฉ์ž ์ •์˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ํ‘œ์‹œ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์–ธ์–ด โ€‹โ€‹์„ค์ •์—์„œ ๊ฐ€์ ธ์™€์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๐Ÿ˜–

@jevansaks , ํ†ต์ฐฐ๋ ฅ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! @sonnemaf ๊ฐ€ ๋‹ต์žฅ์„ ๋ณผ ์ˆ˜ ์žˆ๋„๋ก ํƒœ๊ทธ๋ฅผ ์ง€์ •

@jevansaks xaml ์˜ˆ์ œ๋ฅผ NumberBox์˜ DecimalFormatter์— ์–ด๋–ป๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์ฝ”๋“œ ์ˆจ๊น€์ด ์•„๋‹Œ XAML์—์„œ ์ •์˜ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. DecimalSymbol ๋ฐ GroupingSymbol ์†์„ฑ์„ ๊ฐ–๋Š” ๊ฒƒ๋„ ์ €์—๊ฒŒ ํšจ๊ณผ์ ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๊ฒƒ์€ ๋„ˆ๋ฌด ์‰ฌ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

<StackPanel Spacing="12" Padding="12" Width="200">
    <NumberBox Header="Dollar (US)"
               Value="1234.56"
               FractionDigits="2"
               DecimalSymbol="."
               GroupingSymbol="," />
    <NumberBox Header="Euro (Netherlands)"
               Value="2345.67"
               FractionDigits="2"
               DecimalSymbol=","
               GroupingSymbol="." />
</StackPanel>
* Does anyone have any real app scenarios that justify needing support for hexadecimal or binary?

์นจ์ž…ํ•ด์„œ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ๋ฐฉ๊ธˆ ์ด ์ฃผ์ œ๋ฅผ ๋ฐœ๊ฒฌํ–ˆ์ง€๋งŒ YES YES YES์ž…๋‹ˆ๋‹ค. ๋‘˜ ๋‹ค ์ˆซ์ž ์ปจํŠธ๋กค์—์„œ ์ž์ฃผ ๋ˆ„๋ฝ๋˜๋ฉฐ ์ €์™€ github์˜ ๋‹ค๋ฅธ ๋งŽ์€ ๊ฐœ๋ฐœ์ž๋Š” ์ด์— ๋Œ€ํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ๋นŒ๋“œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ ๊ณ„์‚ฐ๊ธฐ ์˜ˆ์ œ์—์„œ๋Š” ์ˆซ์ž๋ฅผ 16์ง„์ˆ˜๋กœ ํ˜•์‹ํ™”ํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ž…๋ ฅ์„ ์™„๋ฒฝํ•˜๊ฒŒ ์ง€์›ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ˜„์žฌ๋กœ์„œ๋Š” 16์ง„์ˆ˜์˜ ์ ‘๋‘์‚ฌ๋ฅผ ์‚ฌ์šฉ์ž ์ •์˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ์‹œ์ ์—์„œ๋Š” ์ ‘๋‘์‚ฌ๊ฐ€ ์ „ํ˜€ ์—†๋Š” ๊ฒƒ์ด ๋” ์ข‹๊ณ  ๋‹ค๋ฅธ ์‹œ์ ์—์„œ๋Š” ํ•ญ์ƒ 0x ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

NumberBox์˜ DecimalFormatter์— ๋Œ€ํ•œ xaml ์˜ˆ์ œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์ฝ”๋“œ ์ˆจ๊น€์ด ์•„๋‹Œ XAML์—์„œ ์ •์˜ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. DecimalSymbol ๋ฐ GroupingSymbol ์†์„ฑ์„ ๊ฐ–๋Š” ๊ฒƒ๋„ ์ €์—๊ฒŒ ํšจ๊ณผ์ ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๊ฒƒ์€ ๋„ˆ๋ฌด ์‰ฌ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@sonnemaf WinRT์—์„œ ์ž‘์—…ํ•ด์•ผ ํ•˜๋Š” ๋ชจ๋“  ๊ฒƒ์€ DecimalFormatter์ด๋ฉฐ ๋ถˆํ–‰ํžˆ๋„ ์ด๋Ÿฌํ•œ ์„ค์ •์„ ์‚ฌ์šฉ์ž ์ง€์ •ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์†Œ์ˆ˜ ๊ธฐํ˜ธ ๋˜๋Š” ๊ทธ๋ฃนํ™” ๊ธฐํ˜ธ๋ฅผ ์‚ฌ์šฉ์ž ์ •์˜ํ•˜๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์€ OS์˜ ์ง€์—ญ ์ œ์–ดํŒ์—์„œ ์‚ฌ์šฉ์ž ์„ค์ •์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค(๋‚ด๊ฐ€ ๋งํ•  ์ˆ˜ ์žˆ๋Š” ํ•œ).

์ด๋Ÿฌํ•œ ์„ค์ •์— ๋Œ€ํ•ด ์‚ฌ์šฉ์ž ์ง€์—ญ์„ ์กด์ค‘ํ•˜๋Š” ๊ฒƒ์ด ์˜ฌ๋ฐ”๋ฅธ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ ์ด๋ฅผ ์žฌ์ •์˜ํ•ด์•ผ ํ•˜๋Š” ์‹œ๋‚˜๋ฆฌ์˜ค๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

@sonnemaf

16์ง„์ˆ˜ ๋˜๋Š” 2์ง„์ˆ˜์— ๋Œ€ํ•œ ์ง€์›์ด ํ•„์š”ํ•œ ๊ฒƒ์„ ์ •๋‹นํ™”ํ•˜๋Š” ์‹ค์ œ ์•ฑ ์‹œ๋‚˜๋ฆฌ์˜ค๊ฐ€ ์žˆ๋Š” ์‚ฌ๋žŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์ด ์ ์„ ์ธ์ง€ํ•˜๊ณ  ๋‹ต๋ณ€์ด ์กฐ๊ธˆ ๋Šฆ์–ด ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. 16์ง„๋ฒ•/2์ง„๋ฒ• ์ง€์›์ด ๋งค์šฐ ๋„์›€์ด ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ €๋Š” .NET IoT ํ”„๋กœ์ ํŠธ์— ๋งŽ์ด ๊ด€์—ฌํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ๋ ˆ์ง€์Šคํ„ฐ์— ์ฝ๊ณ  ์“ฐ๋Š” ๋น„ํŠธ/๋ฐ”์ดํŠธ๋ฅผ ์กฐ์ž‘ํ•˜๊ณ  ์‚ฌ๋ฌผ์„ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด ๊ณ ์ •ํ•˜๋Š” ๋น„ํŠธ/๋ฐ”์ดํŠธ๋ฅผ ์กฐ์ž‘ํ•  ๋•Œ ์ฃผ๋กœ 16์ง„/2์ง„ ์„ธ๊ณ„์—์„œ ์ž‘์—…ํ•ฉ๋‹ˆ๋‹ค.

16์ง„์ˆ˜/2์ง„์ˆ˜๋ฅผ ์ง€์›ํ•˜๋ฉด ๋งค์šฐ ๊ฐ์‚ฌํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๐Ÿ˜„

16์ง„์ˆ˜๋‚˜ ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. '์žˆ์œผ๋ฉด ์ข‹์„ ๊ฒƒ', ํŠนํžˆ ๋ฐ”์ด๋„ˆ๋ฆฌ์ž…๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž ์—…๋ฐ์ดํŠธ

์•ˆ๋…•ํ•˜์„ธ์š” ์—ฌ๋Ÿฌ๋ถ„! ์šฐ๋ฆฌ๋Š” NumberBox ์‚ฌ์–‘์— ๋งŒ์กฑํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ์ปจํŠธ๋กค์— ๋Œ€ํ•ด ์ ๊ทน์ ์œผ๋กœ ์ž‘์—…ํ•˜๊ณ  ์žˆ๋‹ค๋Š” ์ ์„ ๊ฐ•์กฐํ•˜๊ณ 

๋ช‡ ๊ฐ€์ง€ ์ฐธ๊ณ  ์‚ฌํ•ญ:

  • ํŠนํžˆ InputValidation๊ณผ ๊ด€๋ จ๋œ ๋ช‡ ๊ฐ€์ง€ ๋””์ž์ธ ๋ณต์žก์„ฑ์œผ๋กœ ์ธํ•ด TextBox๋ฅผ ํ•˜์œ„ ํด๋ž˜์Šค๋กœ ๋ถ„๋ฅ˜ํ•˜์ง€ ์•Š๊ธฐ๋กœ ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค. NumberBox๋Š” TextBox๋ฅผ ํฌํ•จํ•˜๋Š” ์ž์ฒด ์ปจํŠธ๋กค์ด ๋ฉ๋‹ˆ๋‹ค.

    • ์ด๊ฒƒ์€ ๋ชจ๋“  TextBox ์†์„ฑ์ด ๋…ธ์ถœ๋˜์ง€ ์•Š์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด ์ค‘ ์–ด๋–ค ๊ฒƒ์ด NumberBox๋กœ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐ ์ค‘์š”ํ•œ์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. _Header, PlaceHolderText_ ๋ฐ ์•„๋งˆ๋„ _Text_์— ๋Œ€ํ•œ ์š•๊ตฌ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋‚ด ๋์—์„œ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋งค์šฐ ์‰ฌ์šด ๋ณ€๊ฒฝ์ด๊ธฐ ๋•Œ๋ฌธ์— ํ™•์‹คํžˆ ์ด๊ฒƒ์„ ์กฐ๊ธˆ ์—ด๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค.

  • ์‚ฌ์–‘์„ ์•„์ฃผ ์•ฝ๊ฐ„ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ ๋Œ€๋ถ€๋ถ„ ๋‹จ์–ด ์ˆ˜์ •์— ๋ถˆ๊ณผํ•˜์ง€๋งŒ ๊ฐ’ ๋ฏธ๋ฆฌ๋ณด๊ธฐ์™€ ๊ฐ™์€ ๋ฏธํ•ด๊ฒฐ ์งˆ๋ฌธ์ด ์žˆ์œผ๋ฉฐ ์ปจํŠธ๋กค์„ ์ž‘์„ฑํ•  ๋•Œ ์ €๋งŒ์˜ ๋””์ž์ธ ์งˆ๋ฌธ์„ ์ƒ์„ฑํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์•„์ง ์ž…๋ ฅ์„ ์ถ”๊ฐ€ํ•˜๊ธฐ์— ์ข‹์€ ์‹œ๊ธฐ์ž…๋‹ˆ๋‹ค ๐Ÿ˜„

@KevinTXY TextBox๊ฐ€ ์•„๋‹Œ Slider ๊ธฐ๋ฐ˜์—์„œ ํŒŒ์ƒ๋˜๋Š” ์ œ์•ˆ์ด ํ•˜๋‚˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์„ ํƒ๋œ ๊ฒƒ์ž…๋‹ˆ๊นŒ?

  • PlaceHolderText
  • ํ—ค๋”
  • ํ…์ŠคํŠธ
  • ๊ฒ€์ฆ ์•„์ด์ฝ˜
  • ๊ฒ€์ฆ ๋ฉ”์‹œ์ง€
  • ์„ ํƒ์ „๊ฒฝ
  • ์„ ํƒ ๋ฐฐ๊ฒฝ
  • ํฌ์ปค์Šค ์ƒํƒœ/์ž์› ๋“ฑ

์ด๊ฒƒ๋“ค์€ ๋‚ด๊ฐ€ ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” TextBox์˜ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค. ๊ธด ํ…์ŠคํŠธ ๋ฌธ์ž์—ด์— ๋” ์ ํ•ฉํ•œ "์ผ๋ฐ˜ ํ…์ŠคํŠธ" ๋ฒ„ํŠผ์ด ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ฐธ๋ฅ˜๋ฏธ๋ฆฌ๋ณด๊ธฐ V2 ๊ธฐ๋Šฅ์ธ์ค„ ์•Œ์•˜๋Š”๋ฐ ๋ฐ”๋€Œ์—ˆ๋‚˜์š”? ์Šฌ๋ผ์ด๋” ์ปจํŠธ๋กค์—๋Š” ์—„์ง€์†๊ฐ€๋ฝ์ด ๋ฏธ๋„๋Ÿฌ์งˆ ๋•Œ ๊ฐ’์„ ํ‘œ์‹œํ•˜๋Š” ๋„๊ตฌ ์„ค๋ช…์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ํ•œ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ์ œ์•ˆํ–ˆ์œผ๋ฉฐ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๋ฉ”์‹œ์ง€๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฒ˜๋ฆฌํ•˜๊ฑฐ๋‚˜ ์ธ๋ผ์ธ์œผ๋กœ ํ‘œ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค.

image

image

์ธ๋ผ์ธ์€ Windows Insider๊ฐ€ ๋„๊ตฌ ์„ค๋ช…์œผ๋กœ ํ‘œ์‹œ๋˜๊ฑฐ๋‚˜ ํ…์ŠคํŠธ ํ•„๋“œ ๋‚ด์— ํ‘œ์‹œ๋˜๋Š” ์˜ˆ์ธก ํ…์ŠคํŠธ ์™„์„ฑ์„ ์‹คํ—˜์ ์œผ๋กœ ๊ตฌ์ถ•ํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์— ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๋ฐฉ๋ฒ•์„ ์„ ํƒํ•˜๋“  ์ด ๋ฐฉ๋ฒ•๊ณผ ์ถฉ๋Œํ•˜๊ฑฐ๋‚˜ ์ด ์ปจํŠธ๋กค์— ๋Œ€ํ•ด ํ•ด๋‹น ์˜ˆ์ธก ๊ธฐ๋Šฅ์ด ๊บผ์ ธ ์žˆ์œผ๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

image

image

@KevinTXY TextBox๊ฐ€ ์•„๋‹Œ Slider ๊ธฐ๋ฐ˜์—์„œ ํŒŒ์ƒ๋˜๋Š” ์ œ์•ˆ์ด ํ•˜๋‚˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์„ ํƒ๋œ ๊ฒƒ์ž…๋‹ˆ๊นŒ?

NumberBox๋Š” ํ˜„์žฌ TextBox๋ฅผ ํ™•์žฅํ•˜๋Š” ๋Œ€์‹  ํƒœ๊ทธ์— TextBox๋ฅผ ํฌํ•จํ•˜๋Š” ์ž์ฒด ์ปจํŠธ๋กค(Windows.UI.Xaml.Controls.Control ํ™•์žฅ)์ž…๋‹ˆ๋‹ค. ์Šฌ๋ผ์ด๋”๋Š” ํฅ๋ฏธ๋กญ๊ฒŒ ๋“ค๋ฆฌ์ง€๋งŒ ๊ตฌํ˜„์ด ์•ฝ๊ฐ„ ํ•ดํ‚น๋  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ปจํŠธ๋กค์—๋Š” NumberBox์— ์†ํ•˜์ง€ ์•Š๋Š” ์†์„ฑ๋„ ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” PM์€ ์•„๋‹ˆ์ง€๋งŒ ์ด๊ฒƒ์„ ๊ฐœ๋ฐœํ•œ ๊ฒฝํ—˜์— ๋น„์ถ”์–ด ๋ณผ ๋•Œ ์ด๊ฒƒ์ด ๊ฐœ๋ฐœ์„ ๋‹จ์ˆœํ™”ํ•˜๊ณ  ํ–ฅํ›„ ํ™•์žฅ์„ฑ์„ ์œ„ํ•œ ์ข‹์€ ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.


์ด๊ฒƒ๋“ค์€ ๋‚ด๊ฐ€ ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” TextBox์˜ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค. ๊ธด ํ…์ŠคํŠธ ๋ฌธ์ž์—ด์— ๋” ์ ํ•ฉํ•œ "์ผ๋ฐ˜ ํ…์ŠคํŠธ" ๋ฒ„ํŠผ์ด ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๊ต‰์žฅํ•ฉ๋‹ˆ๋‹ค - ์ •ํ™•ํžˆ ๋‚ด๊ฐ€ ์ฐพ๋˜ ๊ฒƒ์ž…๋‹ˆ๋‹ค! ์ด ๋ชจ๋“  ๊ฒƒ์—๋Š” ๊ฐ€์น˜๊ฐ€ ์žˆ๋‹ค๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋‘ ์ง€์šฐ๊ธฐ ๋ฒ„ํŠผ์€ ํ˜„์žฌ TextBox์˜ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ์ด๋ฏ€๋กœ ๊ฑฐ๊ธฐ์— ์žˆ์Šต๋‹ˆ๋‹ค. ์•„์ง ๋น„ํ™œ์„ฑํ™”ํ•  ์ƒ๊ฐ์€ ํ•˜์ง€ ์•Š์•˜์ง€๋งŒ ํฐ ํ•ญ๋ชฉ์ด๋‚˜ ํ„ฐ์น˜ ์Šคํฌ๋ฆฐ ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ฐ€์น˜๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ ์–ด๋„ ๋‚ด๊ฐ€ ์–ธ๊ธ‰ํ•œ ์„ธ ๊ฐ€์ง€(Header, PlaceholderText, Text)๋ฅผ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋กœ ๊ฐ€์ ธ์˜ค๋ ค๊ณ  ๋…ธ๋ ฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.


๊ฐ€์น˜ ๋ฏธ๋ฆฌ๋ณด๊ธฐ์— ๊ด€ํ•ด์„œ๋Š” ์•„๋ฌด๊ฒƒ๋„ ํ™•์ •๋˜์ง€ ์•Š์•˜์œผ๋ฉฐ ์‚ฌ์–‘์— ๊ณต๊ฐœ ์งˆ๋ฌธ์œผ๋กœ๋งŒ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์‰ฌ์šด ์ž„์‹œ ์†”๋ฃจ์…˜์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์›ํ•˜๋Š” ๋Œ€๋กœ ํ‘œ์‹œํ•  ๋ฏธ๋ฆฌ ๋ณด๊ธฐ ๊ฐ’์„ ๋…ธ์ถœํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋ฏธ๋ฆฌ ๋ณด๊ธฐ ๋ฒ„์ „์˜ ๋ฒ”์œ„์— ์‰ฝ๊ฒŒ ํฌํ•จ๋  ์ˆ˜ ์žˆ์ง€๋งŒ @SavoySchuler & Co.๊ฐ€ ํ˜ธ์ถœํ•˜๋„๋ก ๋‚จ๊ฒจ ๋‘๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์ˆ˜ํ•™ ์—”์ง„์„ ์—ฐ๊ตฌํ•˜๋Š” ๋™์•ˆ ์ตœ์†Œํ•œ ๋ฉฐ์น  ๋™์•ˆ์€ ๊ณ„์‚ฐ์ด ๋‚ด PR์— ํฌํ•จ๋˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ฏ€๋กœ ๊ธด๊ธ‰ํ•œ ์„ธ๋ถ€ ์‚ฌํ•ญ์€ ์•„๋‹™๋‹ˆ๋‹ค. ์—ฐ๊ตฌ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— ํฅ๋ฏธ๋กœ์šด ์•„์ด๋””์–ด๊ฐ€ ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค!

@KevinTXY ์ด์ƒ์ ์œผ๋กœ๋Š” ๋‚ด์žฅ๋  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ณธ ๊ณ„์‚ฐ ์—”์ง„์„ ๋งŒ๋“ค๊ณ  ์ด ์ปจํŠธ๋กค๊ณผ ํ•จ๊ป˜ ๋…ผ์˜๋œ CalculatorPicker ์•„์ด๋””์–ด์™€ ํ•จ๊ป˜ ํ–ฅํ›„ ์‚ฌ์šฉ์„ ์œ„ํ•ด Calculator ํŒ€๊ณผ ํ˜‘๋ ฅํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. (ํ‘œ์ค€ ๊ณ„์‚ฐ๊ธฐ๋กœ ํ”Œ๋ผ์ด์•„์›ƒ์„ ํ‘œ์‹œํ•˜๋Š” ๊ณ„์‚ฐ๊ธฐ ๋ฒ„ํŠผ์ด ์žˆ๋Š” ์ปจํŠธ๋กค)

image

์‚ฌ์‹ค, Calculator ๋ฉ”์ธํ…Œ์ด๋„ˆ์™€์˜ ํ˜‘์—…์€ ์ข‹์€ ์•„์ด๋””์–ด์ฒ˜๋Ÿผ ๋“ค๋ฆฝ๋‹ˆ๋‹ค. ๊ณ„์‚ฐ๊ธฐ์—์„œ ์ˆ˜ํ•™ ๊ณ„์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์•ฑ ์„œ๋น„์Šค๋ฅผ ๋…ธ์ถœํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ WinUI ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ๋กœ๋“œํ•  ํ•„์š”๋„ ์—†์Šต๋‹ˆ๋‹ค. ์•ฑ์ด ์„ค์น˜๋˜์–ด ์žˆ์œผ๋ฉด ์•ฑ ์„œ๋น„์Šค์— ์•Œ๋ฆฌ๊ณ  ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์กฐ์šฉํžˆ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

Slider์—์„œ ํŒŒ์ƒ์— ๊ด€ํ•ด์„œ - ๋‚˜๋Š” ์‹ค์ œ๋กœ RangeBase ๋ผ๊ณ 

์•„ ์˜ˆ, RangeBase, ๊ทธ๊ฒŒ ์ „๋ถ€์˜€์Šต๋‹ˆ๋‹ค.

๊ณ„์‚ฐ๊ธฐ๋Š” ์ตœ๊ทผ์— ํ•ญ์ƒ ๋งจ ์œ„์— ์žˆ๋Š” CompactOverlay ๋ชจ๋“œ๋ฅผ ์ง€์›ํ•˜๋Š” ์ž‘์—…์„ ์™„๋ฃŒํ–ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ CalendarFlyout๊ณผ ๋น„์Šทํ•œ ํฌ๊ธฐ์˜ ํ”Œ๋ผ์ด์•„์›ƒ์— ๋” ์ž‘์€ ํ‚คํŒจ๋“œ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์ด ๋” ์‰ฝ๊ฒŒ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (CalculatorBox ์ปจํŠธ๋กค์ด ํฌํ•จ๋˜๋„๋ก ์Šน์ธ๋œ ๊ฒฝ์šฐ.

์•ฑ ์„œ๋น„์Šค(WinUI ์—…๋ฐ์ดํŠธ๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๊ณ„์‚ฐ๊ธฐ ์ €์žฅ์†Œ ์—…๋ฐ์ดํŠธ์— ๋ฐ˜ ์˜์กด์ )์ธ์ง€ ๋˜๋Š” WinUI์— ์ถ”๊ฐ€๋˜๊ณ  ๊ณ„์‚ฐ๊ธฐ์˜ ์—”์ง„์—์„œ ํŒŒ์ƒ๋  ์ˆ˜ ์žˆ๋Š” ์„œ๋น„์Šค ๋ฐ”์ด๋„ˆ๋ฆฌ์ธ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์—…๋ฐ์ดํŠธ: ์ด์ œ ์ฝ”๋“œ PR ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค ๐ŸŽ†!

๋‚˜๋Š” ๊ฑฐ๊ธฐ์—์„œ ๋ช‡ ๊ฐ€์ง€ ๋ฌธ์ œ๋ฅผ ์ถ”์ ํ•˜๊ณ  ์žˆ์ง€๋งŒ ๋Œ€๋ถ€๋ถ„์€ ๋””์ž์ธ๊ณผ ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค.

@xyzzer ์™€ @mdtauk ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! RangeBase๋ฅผ ํ™•์ธํ–ˆ์œผ๋ฉฐ TextBox๋ฅผ ์„œ๋ธŒํด๋ž˜์‹ฑํ•˜๋Š” ๊ฒƒ๋งŒํผ ๋งŽ์€ ์ง์„ ์šด๋ฐ˜ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. ์ง€๊ธˆ์œผ๋กœ์„œ๋Š” ์ปจํŠธ๋กค์— TextBox๋ฅผ ํฌํ•จํ•˜๊ณ  ํ•„์š”ํ•œ ์†์„ฑ๊ณผ ์ ‘๊ทผ์„ฑ ๊ธฐ๋Šฅ๋งŒ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ์‹์„ ๊ณ ์ˆ˜ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹๊ฐ€์น˜ ์žˆ๋Š” ๊ณ ๋ ค ์‚ฌํ•ญ์ด์—ˆ๊ณ  ํ˜„์žฌ ์ง„ํ–‰ ์ค‘์ธ ์ ‘๊ทผ์„ฑ ๋Œ€ํ™”๋ฅผ ์•Œ๋ฆฌ๋Š” ๋ฐ ๋„์›€์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

@mdtauk , ์‹œ์ž‘ ๋ชฉ๋ก์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค! @KevinTXY ๋Š” ๊ท€ํ•˜๊ฐ€ ๋‚˜์—ดํ•œ API๋ฅผ ๊ณต๊ฐœํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์œผ๋ฉฐ ๋‚˜๋จธ์ง€๋Š” ๊ณง ๊ฒ€ํ† ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์–ธ๊ธ‰๋œ @KevinTXY ์™€ ๊ฐ™์€ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๋ฐ ํŒ์—… ๊ณ„์‚ฐ๊ธฐ(์—ฌ๊ธฐ์„œ v1 ๋ณด์žฅ ์—†์Œ). ์šฐ๋ฆฌ๋Š” ์ •๋ ฌ ๋ฐ ํ™œ์šฉ ๊ฐ€๋Šฅํ•œ ์ž‘์—…์— ๋Œ€ํ•ด ๊ณ„์‚ฐ๊ธฐ์™€ ์ ๊ทน์ ์œผ๋กœ ๋Œ€ํ™”ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ๋“ค์€ ๋ฉ‹์ง„๋ฐ! ์ด ์ปจํŠธ๋กค์— ๋Œ€ํ•œ ํ˜์‹ ์„ ๊ณ„์† ์ถ”์ง„ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๊ต‰์žฅ. @KevinTXY ๋Š” ์œ„์— ์ž์‹ ์˜ ์ฝ”๋“œ PR์„ ๊ฒŒ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค. ์ง€์นจ ๋ฐ ๋ฌธ์„œ ์ดˆ์•ˆ ์ž‘์„ฑ์œผ๋กœ ๋„˜์–ด๊ฐ€๊ธฐ ์ง์ „์— ์‚ฌ์–‘์— ๋‚˜๋จธ์ง€ ๋Š์Šจํ•œ ๋ถ€๋ถ„์„ ๋ชจ๋‘ ๋ฌถ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋„ค์ด๋ฐ

์‚ฌ์–‘์ด ์ €์—๊ฒŒ์„œ ๋ฉ€์–ด์กŒ๋‹ค๋Š” ์˜๊ฒฌ์ด ๋„ˆ๋ฌด ๋งŽ์•„์„œ ์ƒํ™ฉ์ด ์ง„์ • ๋œ ํ›„ ์‚ดํŽด๋ณด๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋จผ์ € C# ๊ทœ์น™์„ ๋”ฐ๋ฅด์ง€ ์•Š๋Š” ์ด๋ฆ„ ์ง€์ •์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ, ์ด๋Ÿฌํ•œ ์ปจํŠธ๋กค์ด C++๋กœ ์ž‘์„ฑ๋œ ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ์—ฌ์ „ํžˆ ํ”Œ๋žซํผ์˜ ๋‹ค๋ฅธ ์ด๋ฆ„ ์ง€์ •๊ณผ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

| ์œ ํ˜• | ํ˜„์žฌ ์ด๋ฆ„ | ์ œ์•ˆ๋œ ์ด๋ฆ„ |
|---------|----------------|-------------------|
| ๋ถ€์šธ | ์ˆ˜๋ฝ๊ณ„์‚ฐ | IsCalculationAccepted |
| ๋ถ€์šธ | HyperDrag ํ™œ์„ฑํ™” | IsHyperDragEnabled |
| ๋ถ€์šธ | ํ•˜์ดํผ์Šคํฌ๋กค ๊ฐ€๋Šฅ | IsHyperScrollEnabled |

๋‹จ๊ณ„ ์ฃผํŒŒ์ˆ˜

๋˜ํ•œ StepFrequency๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์ด๊ฒƒ์€ ์‚ฌ์–‘์— ์ •์˜๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฉฐ "XAML Toolkit์˜ NumericUpDown"์— ๋Œ€ํ•œ ๊ฒฝํ—˜์ด ์—†์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์—…์— ๋”ฐ๋ผ Frequency๋ผ๋Š” ๋‹จ์–ด๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ์˜๋ฏธ๊ฐ€ ์—†์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์•„๋งˆ๋„ "๋‹จ๊ณ„"์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์Šฌ๋ผ์ด๋” ์ปจํŠธ๋กค์—์„œ TickFrequency๋Š” ์ „์ฒด ์ตœ๋Œ€-์ตœ์†Œ ๋ฒ”์œ„์˜ ๊ณ„์ˆ˜์— ํ‹ฑ์ด ํ‘œ์‹œ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ์ปจํŠธ๋กค์—์„œ๋Š” ์ด๊ฒƒ์ด ๋‹จ์ง€ ์ตœ์†Œ ์ฆ๋ถ„/๋‹จ๊ณ„ ํฌ๊ธฐ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉ์ž๊ฐ€ ๋‹จ๊ณ„ ์™ธ๋ถ€์˜ ๊ฐ’์„ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์˜ˆ๋ฅผ ๋“ค์–ด MinValue = 0, MaxValue = 6, StepFrequency = 2์ž…๋‹ˆ๋‹ค. ์œ„์ชฝ ํ™”์‚ดํ‘œ ๊ฐ’์„ ์‚ฌ์šฉํ•˜๋ฉด {2, 4, 6}์ด ์ถฉ๋ถ„ํžˆ ๊ณต์ •ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์œ ํšจํ•œ ๊ฐ’์œผ๋กœ 0.5๋ฅผ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด RoundingMode์— ๋”ฐ๋ผ 0 ๋˜๋Š” 2๋กœ ๋ฐ˜์˜ฌ๋ฆผ๋ฉ๋‹ˆ๊นŒ?

์ตœ์†Œ/์ตœ๋Œ€๊ฐ’

์•„๋ž˜ ๋‘ ์†์„ฑ์˜ ๊ฒฝ์šฐ ๋‹ค๋ฅธ ์ปจํŠธ๋กค(Slider, RangeBase)์—์„œ์™€ ๊ฐ™์ด ์ตœ์†Œ๊ฐ’๊ณผ ์ตœ๋Œ€๊ฐ’์ด์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. API๋Š” ์ผ๊ด€์„ฑ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์ด์ค‘ ์ตœ์†Œ๊ฐ’;
๋”๋ธ” MaxValue;

์œ„์•„๋ž˜ ๋ฐ˜๋ณต ๋ฒ„ํŠผ

๋‚ด๊ฐ€ ์•„๋Š” ํ•œ ๋…ผ์˜๋˜์ง€ ์•Š์€ ๋˜ ๋‹ค๋ฅธ ๊ธฐ๋Šฅ์€ ์œ„/์•„๋ž˜ ๋ฒ„ํŠผ์„ ์‹ค์ œ๋กœ RepeatButton์œผ๋กœ ๋งŒ๋“ค์ง€ ์—ฌ๋ถ€์ž…๋‹ˆ๋‹ค(๊ทธ๋ž˜์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค). ๋ฐ˜๋ณต ๋ฒ„ํŠผ์ธ ๊ฒฝ์šฐ Slider ์ปจํŠธ๋กค์ฒ˜๋Ÿผ Delay/Interval ์†์„ฑ์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Slider.Interval Slider.Delay

์ˆซ์ž

IntegerDigits ๋ฐ FractionDigits๊ฐ€ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ์„ค๋ช…์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋‚ด ์ƒ๊ฐ์— ๊ทธ๋“ค์€ ์ˆซ์ž์˜ ๊ฐ ๋ถ€๋ถ„์— ๋Œ€ํ•œ ์ž๋ฆฟ์ˆ˜๋ฅผ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค. IntegerDigits = 2๋Š” ์ตœ๋Œ€๊ฐ’์ด 99๊ฐ€ ๋  ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. FractionDigits = 3์€ MaxValue๊ฐ€ 0.999๊ฐ€ ๋  ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ SignificantDigits๋Š” ์ด ๋‘ ์†์„ฑ์„ ์–ด๋–ป๊ฒŒ ์žฌ์ •์˜ํ•ฉ๋‹ˆ๊นŒ?

๋„ค๊ฑฐํ‹ฐ๋ธŒ ์ œ๋กœ?

์ด ์†์„ฑ์ด ํ•„์š”ํ•œ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๋กœ์ปฌ๋ผ์ด์ œ์ด์…˜ ๊ทธ ์ž์ฒด์ธ๊ฐ€์š”? "-0.0" ๋˜๋Š” "-0"์„ ๋ณธ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค. ํ•ญ์ƒ "0"์ž…๋‹ˆ๋‹ค.
๋ถ€์šธ IsZeroSigned;

ํ˜„์ง€ํ™”

UI ํ˜„์ง€ํ™” ๋ฐ ์ˆซ์ž ํ˜•์‹ ์žฌ์ •์˜๋ฅผ ์ง€์›ํ•˜๋ ค๋ฉด ์ด ์ปจํŠธ๋กค์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅด๊ฒŒ ํ‘œ์‹œ๋˜์–ด์•ผ ํ•˜๋Š” ํ˜„์ง€ ๋ฐ ํ•ด์™ธ ๊ธˆ์•ก์ด ํ•„์š”ํ•œ ์—ฌ๋Ÿฌ ์šฉ๋„(๊ธˆ์œต ์•ฑ)๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ŠคํŽ™ ์–ด๋””์—์„œ๋„ ๋ณผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ด์ค‘์—์„œ ํ…์ŠคํŠธ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์€ Slider.ThumbToolTipValueConverter์˜ ์ •์‹ ์— ๋”ฐ๋ผ ValueConverter๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž ์ •์˜ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฐฉ์‹์œผ๋กœ ๊ฐ€์žฅ ๋ณต์žกํ•œ ๋ถ€๋ถ„์€ ์•„๋ž˜์˜ ์‹ค์ œ ์‚ฌ๋ก€์™€ ๊ฐ™์ด ๋ชจ๋“  ์š”๊ตฌ์— ๋งž๊ฒŒ ์‚ฌ์šฉ์ž ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

image

์ˆซ์ž์™€ ๋ˆ์— ๋Œ€ํ•œ ์†Œ์ˆ˜ ๊ตฌ๋ถ„ ๊ธฐํ˜ธ๊ฐ€ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๊ณ  ์Œ์ˆ˜์˜ ์ง€์ •๋„ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ValueConverter๊ฐ€ ์—†๋Š” NumericBox์— ๋Œ€ํ•œ ๊ฐ€์žฅ ์•ˆ์ „ํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์€ ์ •์ˆ˜ ๋ชจ๋“œ์—์„œ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ณ„์‚ฐ๊ธฐ๋„ ValueConverter๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ด ์ž‘์—…์œผ๋กœ ์ปจํŠธ๋กค์— ๊ณผ๋ถ€ํ•˜๊ฐ€ ๊ฑธ๋ฆด ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

@eugenegff ์ˆซ์ž๋ฅผ ๋ฌธ์ž์—ด๋กœ์˜ ๋ณ€ํ™˜์„ ์ผ๋ฐ˜ํ™”ํ•˜๋Š” ์ข‹์€ ์•„์ด๋””์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํ˜„์ง€ํ™”๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋‹จ์œ„ ์ถ”๊ฐ€์™€ ๊ฐ™์ด ์›ํ•˜๋Š” ๋ชจ๋“  ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ๋ณผ ์ˆ˜์žˆ๋Š” ์œ ์ผํ•œ ๋ณต์žก์„ฑ์€ ์ปจํŠธ๋กค๊ณผ ๊ด€๋ จ๋œ Culture/NumberFormatInfo๋ฅผ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์ง€์ • IValueConverter๋กœ ์ด๋™ํ•˜๋Š” XAML์˜ ๋ณ€ํ™˜๊ธฐ ๋งค๊ฐœ ๋ณ€์ˆ˜์ผ ์ˆ˜ ์žˆ์ง€๋งŒ ์ปจํŠธ๋กค ์ž์ฒด์—์„œ ์ด๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋” ๊นจ๋—ํ•œ ๋ฐฉ๋ฒ•์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด ์†์„ฑ์ด ํ•„์š”ํ•œ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๋กœ์ปฌ๋ผ์ด์ œ์ด์…˜ ๊ทธ ์ž์ฒด์ธ๊ฐ€์š”? "-0.0" ๋˜๋Š” "-0"์„ ๋ณธ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค. ํ•ญ์ƒ "0"์ž…๋‹ˆ๋‹ค.

Windows์˜ DecimalFormatter ํด๋ž˜์Šค ์†์„ฑ์ž…๋‹ˆ๋‹ค. ์ด์ƒํ•ด? ์•„๋งˆ. ์šฐ๋ฆฌ๊ฐ€ ์ƒ๋žตํ•œ IsGrouped ๋ฐ ์ง€์—ญํ™” ์†์„ฑ๊ณผ ๊ฐ™์€ ์ผ๋ถ€ ์†์„ฑ์ด ์žˆ์œผ๋ฏ€๋กœ ์ด ์†์„ฑ๋„ ํ•„์š”ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋™์‹œ์— ์ด๋ฏธ ๊ตฌํ˜„๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์€ 3์ค„์˜ ์ฝ”๋“œ๋ฅผ ๋ถ€ํ’€๋ฆฌ๋Š” ๊ฒƒ ์™ธ์— ๋‹ค๋ฅธ ๋ชฉ์ ์ด ์—†์Šต๋‹ˆ๋‹ค. ํฅ๋ฏธ๋กญ๊ฒŒ๋„ ๋ถ€ํ˜ธ ์žˆ๋Š” 0์„ ๊ฐ–๊ธฐ ์œ„ํ•œ ์šฉ๋„์™€ IEEE ์ „์ œ ์กฐ๊ฑด์ด ์žˆ์Šต๋‹ˆ๋‹ค.

UI ํ˜„์ง€ํ™” ๋ฐ ์ˆซ์ž ํ˜•์‹ ์žฌ์ •์˜๋ฅผ ์ง€์›ํ•˜๋ ค๋ฉด ์ด ์ปจํŠธ๋กค์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅด๊ฒŒ ํ‘œ์‹œ๋˜์–ด์•ผ ํ•˜๋Š” ํ˜„์ง€ ๋ฐ ํ•ด์™ธ ๊ธˆ์•ก์ด ํ•„์š”ํ•œ ์—ฌ๋Ÿฌ ์šฉ๋„(๊ธˆ์œต ์•ฑ)๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ŠคํŽ™ ์–ด๋””์—์„œ๋„ ๋ณผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

@SavoySchuler ์•„๋งˆ๋„ DecimalFormatter ํด๋ž˜์Šค์—์„œ ์–ธ์–ด ์„ค์ • ์ง€์›์„ ์‚ดํŽด๋ด์•ผ ํ• ๊นŒ์š”? ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ํ–‰๋™ํ•˜๋Š”์ง€ ์ž˜ ๋ชจ๋ฆ…๋‹ˆ๋‹ค.

์ข‹์•„, ๋‚˜๋Š” ์—ฌ๊ธฐ์„œ ๊ทผ๋ณธ์ ์ธ ๋ฌธ์ œ๋ฅผ ์ดํ•ดํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค. C++ ์„ธ๊ณ„์—์„œ๋Š” DecimalFormatter์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์ง€๋งŒ C# ์„ธ๊ณ„์—์„œ๋Š”(WinUI๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ) ์ผ๋ฐ˜์ ์œผ๋กœ IFormatProvider(์ง€์ •๋œ Culture์˜ NumberFormatInfo)๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. NumberFormatInfo์—๋Š” ์ด๋ฏธ ๋Œ€๋ถ€๋ถ„์˜ ์†์„ฑ์ด ์žˆ์œผ๋ฏ€๋กœ(๋™์‹œ์— IsZeroSigned๊ฐ€ ๋ˆ„๋ฝ๋จ) ๊ฐœ๋ฐœ์ž๊ฐ€ ํ•ด๋‹น ๋˜๋Š” IFormatProvider๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์Œ, ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. C++๋Š” .net ์„ธ๊ณ„์˜ IFormatProvider๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ์ด ์ปจํŠธ๋กค์€ ๋‘ ๊ฐ€์ง€ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค๋Š” ์ ์„ ๊ณ ๋ คํ•  ๋•Œ C# ๋ฐ C++์—์„œ ํ˜„์ง€ํ™”๋ฅผ ์–ด๋–ป๊ฒŒ ์™„๋ฒฝํ•˜๊ฒŒ ์ง€์›ํ• ๊นŒ์š”? ๊ธ€์Ž„์š”, ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ๊ฐ€ ์˜๋ฆฌํ•œ ์†”๋ฃจ์…˜์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š๋‹ค๋ฉด ์ €๋Š” ๋‘ ๊ฐ€์ง€ ๊ฐ€๋Šฅ์„ฑ๋งŒ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ์ˆซ์ž ์„œ์‹์— ๋Œ€ํ•œ ๋ชจ๋“  ์†์„ฑ์„ ์™„์ „ํžˆ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค(NumberFormatInfo ๋ฐ DecimalFormatter๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ๋‹ค์‹œ ๊ตฌํ˜„). IsZeroSigned, IntegerDigits, FractionalDigits ๋“ฑ๋งŒ ์ถ”๊ฐ€ํ•ด๋„ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. NumberNegativePattern, NumberGroupSeparator, NumberGroupSizes ๋“ฑ๋„ ๋ชจ๋‘ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  2. @eugenegff๊ฐ€ ์ œ์•ˆํ•œ ๋Œ€๋กœ

์ด ์ปจํŠธ๋กค์—์„œ ํ˜„์ง€ํ™”๊ฐ€ ์–ด๋–ป๊ฒŒ ํ˜•์„ฑ๋˜๊ณ  ์žˆ๋Š”์ง€ ์•ฝ๊ฐ„ ๊ฑฑ์ •๋ฉ๋‹ˆ๋‹ค. ์ €๋Š” ์ฒ˜์Œ๋ถ€ํ„ฐ ํ˜„์ง€ํ™”๋ฅผ ์ œ๊ธฐํ–ˆ์Šต๋‹ˆ๋‹ค(์ด ์ฃผ์ œ์— ๋Œ€ํ•œ ์„ธ ๋ฒˆ์งธ ์˜๊ฒฌ!). ์ปจํŠธ๋กค์ด ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜๋  ๋•Œ ์ˆซ์ž ํ˜•์‹์„ ์™„์ „ํžˆ ์‚ฌ์šฉ์ž ์ง€์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ์—†์œผ๋ฉด ์ด ์ œ์–ด๋Š” ์‹ค์ œ ์‚ฌ์šฉ์—์„œ ์ƒ๋‹นํžˆ ์ œํ•œ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ์ด ์ปจํŠธ๋กค์€ ๋‘ ๊ฐ€์ง€ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค๋Š” ์ ์„ ๊ณ ๋ คํ•  ๋•Œ C# ๋ฐ C++์—์„œ ํ˜„์ง€ํ™”๋ฅผ ์–ด๋–ป๊ฒŒ ์™„๋ฒฝํ•˜๊ฒŒ ์ง€์›ํ• ๊นŒ์š”?

์šฐ๋ฆฌ๋Š” ๋‹น์‹ ์„ ๋“ฃ๊ณ ! ๊ทธ๊ฒƒ์€ ์šฐ๋ฆฌ๊ฐ€ ์˜คํ”„๋ผ์ธ์—์„œ ์กฐ์‚ฌํ•ด ์™”์ง€๋งŒ ๊ทผ๋ณธ์ ์œผ๋กœ .NET์€ ํ”Œ๋žซํผ๊ณผ ๋ณ„๊ฐœ๋กœ ์ž์ฒด ํ˜„์ง€ํ™”๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋ฌด์‹œํ•˜๊ธฐ ์œ„ํ•œ ์ฝœ๋ฐฑ์€ ํ›Œ๋ฅญํ•œ ํƒˆ์ถœ๊ตฌ๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ๊ท€ํ•˜์˜ ์˜ต์…˜ 1์ด ์šฐ๋ฆฌ๊ฐ€ ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ๋กœ๊ฐ€ ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ํ˜„์žฌ ์„œ์‹ ์ง€์ • ๋ฐ ๊ตฌ๋ฌธ ๋ถ„์„์„ ์œ„ํ•œ WinRT API์—๋Š” ํ•„์š”ํ•œ ๋ชจ๋“  ์‚ฌ์šฉ์ž ์ง€์ • ๋…ธ๋ธŒ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์•„์ง ์กฐ์‚ฌ ์ค‘์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ์ด๋ฏธ ๋…ผ์˜๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜์ง€ ์•Š์•˜์ง€๋งŒ ๋ˆ„๊ตฌ๋“ ์ง€ ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜ ์ด์ƒ์„ ์˜๋ฏธํ•˜๋Š” ๊ณ„์‚ฐ์„ ์œ„ํ•œ ํ•จ์ˆ˜ ์ง€์›์— ๋Œ€ํ•œ ํฐ ํ•„์š”์„ฑ์ด๋‚˜ ๋” ์ค‘์š”ํ•œ ์„ ๋ก€๋ฅผ ๋ณด๋Š”์ง€ ๋นจ๋ฆฌ ๋ฌป๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค.
cos(), sin(), tan(), asin(), acos(), atan(), sqrt(), log(), abs(), ceil(), floor(), degree equivalents of trig functions, hyperbolic functions, etc

์ €๋Š” ์šฐ๋ฆฌ์˜ ํ•„์š”์— ๋งž๊ฒŒ ์ˆ˜ํ•™ ํŒŒ์„œ๋ฅผ ๊ฟฐ๋งค๊ณ  ์žˆ์œผ๋ฉฐ ๊ธฐ๋Šฅ์€ RPN์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •์„ ๋ณต์žกํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๋ฌธ์ œ ๋˜๋Š” ๋ถ€ํ’€์–ด ์˜ค๋ฅด๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋Š” ๊ฒฝ์šฐ. ๊ฐœ์ธ์ ์œผ๋กœ ๋„ˆ๋ฌด ์ž˜ ๋งž๋Š”๋‹ค๊ณ ๋Š” ์ƒ๊ฐํ•˜์ง€ ์•Š์ง€๋งŒ, ์ „๋ก€๊ฐ€ ๋งŽ๋‹ค๋ฉด ํฌ๊ฒŒ ๋ฌธ์ œ๋  ์ •๋„๋Š” ์•„๋‹ˆ๋‹ค.

๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์„ ๊ฒ€์ƒ‰ํ•˜๊ธฐ๊ฐ€ ์‰ฝ์ง€ ์•Š์œผ๋ฉฐ ๋” ๋ณต์žกํ•œ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์ง€์›์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž๊ฐ€ ์ž์‹ ์˜ ๊ตฌ๋ฌธ ๋ถ„์„ ๋˜๋Š” ์‚ฌ์ „ ์ฒ˜๋ฆฌ ๋…ผ๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ฝœ๋ฐฑ ์ด๋ฒคํŠธ์— ๋Œ€ํ•œ ๊ตฌ๋ฌธ ๋ถ„์„์„ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๋” ๊ฐ€์น˜์žˆ๋Š” ๊ฒƒ์€ ์—ฐ์‚ฐ์ž๋กœ ํ…์ŠคํŠธ ์ž…๋ ฅ์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ…์ŠคํŠธ๋ฅผ ํด๋ฆญํ•˜๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ชจ๋‘ ์„ ํƒ๋˜๋ฉฐ ์ด์ „ ๊ฐ’์„ ์‚ญ์ œํ•˜๊ธฐ ์œ„ํ•ด ๋จผ์ € ์‚ญ์ œ๋ฅผ ๋ˆ„๋ฅด์ง€ ์•Š๊ณ  ์ƒˆ ๊ฐ’์„ ์ž…๋ ฅํ•˜๊ฑฐ๋‚˜ ๋‹จ์ˆœํžˆ "*1.2" ๋˜๋Š” "x1.2" [Enter] ์™€ ๊ฐ™์€ ๊ฒƒ์„ ์ž…๋ ฅํ•˜๊ณ  ์ž…๋ ฅํ•œ ํ…์ŠคํŠธ์— ๋” ์ด์ƒ ์ž…๋ ฅ๋œ ๊ฐ’์ด ํฌํ•จ๋˜์ง€ ์•Š๋”๋ผ๋„ ํ˜„์žฌ ๊ฐ’์— 1.2๋ฅผ ๊ณฑํ•ฉ๋‹ˆ๋‹ค. "+2", "-5", "/3", "%120" ๋“ฑ์— ๋Œ€ํ•ด์„œ๋„ ๋™์ผํ•œ ์ž‘์—…์ด ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.

์ผ๋ถ€ ์ „๋ฌธ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ(BeLight Software, Live Home 3D ํ”„๋กœ์ ํŠธ)๋Š” ๊ฐ’ <=> ํ…์ŠคํŠธ ๋ณ€ํ™˜์„ ์œ„ํ•ด ํ”Œ๋Ÿฌ๊ทธํ˜• ValueConverter๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด NumberBox๊ฐ€ ์ ํ•ฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ๋งค์šฐ ๋“œ๋ฌผ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์•ฑ์— ๊ฐ๋„ ์ž…๋ ฅ์ด ์žˆ์ง€๋งŒ ๊ฐ๋„ ๊ฐ’์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ์ €์—๊ฒŒ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์šฉ๋„๋Š” ๊ธฐ์กด์— ๊ฐ’์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๊ธฐ์กด์„ ์ˆซ์ž๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‹œ๊ฐ„์„ ์ ˆ์•ฝํ•˜๊ณ  ์ •์‹ ์ ์œผ๋กœ ๊ณ„์‚ฐ์„ ํ•˜์ง€ ์•Š๋„๋ก ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. (Btw ๋‚ด ์ƒ๊ฐ์— Adobe ์•ฑ์—๋Š” 4๊ฐœ์˜ ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. https://adobexd.uservoice.com/forums/353007-adobe-xd-feature-requests/suggestions/12992463-support-math-operators-in-number -ํ•„๋“œ)

๋˜ํ•œ cos()์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ์€ ์ผ์ข…์˜ Excel ์•ฑ์„ ๋งŒ๋“ค์ง€ ์•Š๋Š” ํ•œ ์ดํ•ด๊ฐ€ ๋˜์ง€ ์•Š๋Š” ๊ณณ์— ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜์—๊ฒŒ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์šฉ๋„๋Š” ๊ธฐ์กด์— ๊ฐ’์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๊ธฐ์กด์„ ์ˆซ์ž๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‹œ๊ฐ„์„ ์ ˆ์•ฝํ•˜๊ณ  ์ •์‹ ์ ์œผ๋กœ ๊ทธ ๊ณ„์‚ฐ์„ ํ•˜์ง€ ์•Š๋„๋ก ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํฐ ํ™•์ธ! @xyzzer๊ฐ€ ์ œ์•ˆํ•œ ๊ฒƒ๊ณผ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค. ๋น„์Šทํ•œ ๊ตฌํ˜„์„ ์‚ดํŽด๋ณด๊ณ  ์ž์—ฐ์Šค๋Ÿฝ๊ณ  ์ง๊ด€์ ์ธ ๋ฐฉ์‹์œผ๋กœ ์ด๋ฅผ ์ˆ˜ํ–‰ํ•  ์—ฌ์ง€๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ(BeLight Software, Live Home 3D ํ”„๋กœ์ ํŠธ)๋Š” ๊ฐ’ <=> ํ…์ŠคํŠธ ๋ณ€ํ™˜์„ ์œ„ํ•ด ํ”Œ๋Ÿฌ๊ทธํ˜• ValueConverter๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด NumberBox๊ฐ€ ์ ํ•ฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋‹น์‹ ์ด ์ œ๊ณตํ•œ Slider ์˜ˆ์ œ๋ฅผ ์‚ดํŽด๋ณด์•˜๊ณ  ๋งค์šฐ ํ•ฉ๋ฆฌ์ ์œผ๋กœ ๋“ค๋ ธ์Šต๋‹ˆ๋‹ค. NumBox์— ๋Œ€ํ•œ IValueConverter์˜ ๊ฐ€์น˜๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ณง ์‚ดํŽด๋ณด๊ณ  ์‚ฌ์–‘์— ์ ์ ˆํ•˜๊ฒŒ ๋งž๋Š”์ง€ ๊ฒฐ์ •ํ•˜๋„๋ก ๋…ธ๋ ฅํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์•„์ง ์•„๋ฌด๊ฒƒ๋„ ์•ฝ์†์ด ์—†์Šต๋‹ˆ๋‹ค!

@KevinTXY ์œ„์—์„œ ์–ธ๊ธ‰
๋˜ํ•œ "์ˆซ์ž ์ƒ์ž๋Š” ์ˆซ์ž ์ „์šฉ ํ…์ŠคํŠธ ์ปจํŠธ๋กค์ž…๋‹ˆ๋‹ค ..." ์‚ฌ์–‘์˜ ์‹œ์ž‘ ๋ถ€๋ถ„์—์„œ ์„ค๋ช…์˜ ์ฒซ ๋ฒˆ์งธ ์ค„์„ ์ค‘๋‹จํ•ฉ๋‹ˆ๋‹ค.

์•„์ง ํ˜„์ง€ํ™”์— ๋Œ€ํ•œ ์งˆ๋ฌธ์ด ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์— ๋†€๋ž์Šต๋‹ˆ๋‹ค. ์ปจํŠธ๋กค์ด FrameworkElement ์—์„œ ์ƒ์†ํ•˜๋ฏ€๋กœ(๋ฐ˜๋“œ์‹œ?) Language ์†์„ฑ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋‹ค๋ฅธ ๋ชจ๋“  FrameworkElement์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์‹œ์Šคํ…œ ๋กœ์บ˜ UI ์„ค์ •์— ์˜์กดํ•˜์ง€ ์•Š๊ณ  ๋กœ์บ˜ ์„ค์ •์„ ์ง์ ‘ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
์ฆ‰, ์‹ญ์ง„์ˆ˜ ๋ฐ ๊ทธ๋ฃนํ™” ๋ฌธ์ž์™€ ๊ฐ™์€ ํ•ญ๋ชฉ์„ ์ธ์Šคํ„ด์Šค๋ณ„๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•„์ง ํ˜„์ง€ํ™”์— ๋Œ€ํ•œ ์งˆ๋ฌธ์ด ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์— ๋†€๋ž์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ๋Š” ์–ธ์–ด๊ฐ€ ์„œ์‹์„ ์ œ์–ดํ•˜๋Š” โ€‹โ€‹๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ง€์—ญ/๋ฌธํ™” ์„ค์ •์ด๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ˜„์ง€ํ™”๋Š” ์ˆซ์ž/ํ†ตํ™”/๋‚ ์งœ/์‹œ๊ฐ„ ํ˜•์‹์ด ์ง€์—ญ๋ณ„๋กœ ์ œ์–ด๋˜๋Š” ๋ฐ˜๋ฉด ์˜ฌ๋ฐ”๋ฅธ ์–ธ์–ด๋กœ ํ‘œ์‹œ๋˜๋„๋ก ์—…๋ฐ์ดํŠธ๋œ UI ๋ฌธ์ž์—ด์„ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ถ”๊ฐ€ ์ •๋ณด: https://docs.microsoft.com/en-us/globalization/locale/locale-and-culture. ๊ทธ๋ฆฌ๊ณ  ๋ฌธ์ œ๋ฅผ ๋ณต์žกํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด Windows์—์„œ๋Š” ๊ธฐ๋ณธ๊ฐ’์„ ์žฌ์ •์˜ํ•˜์—ฌ UI์—์„œ ๋กœ์บ˜ ์„ค์ •์„ ์‚ฌ์šฉ์ž ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์†Œ์ˆ˜์  ๊ตฌ๋ถ„ ๊ธฐํ˜ธ๋ฅผ ๊ธฐ๋ณธ๊ฐ’ ๋Œ€์‹  ์ž„์˜์˜ ๋ฌธ์ž๋กœ ์ง€์ •ํ•˜๊ณ  ์‹ถ๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฌด์—‡๋ณด๋‹ค๋„ .NET์„ ์‚ฌ์šฉํ•˜๋ฉด ์•ฑ์—์„œ ์ด๋ฅผ ์‚ฌ์šฉ์ž ์ง€์ •ํ•  ์ˆ˜๋„ ์žˆ์œผ๋ฏ€๋กœ ๊ฐœ๋ฐœ์ž๋Š” ์—ฌ๊ธฐ์—์„œ ํ•ด๋‹น ์ˆ˜์ค€์˜ ์‚ฌ์šฉ์ž ์ง€์ •์„ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ์ œ๋Š” ์–ธ์–ด๊ฐ€ ์„œ์‹์„ ์ œ์–ดํ•˜๋Š” โ€‹โ€‹๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ง€์—ญ/๋ฌธํ™” ์„ค์ •์ด๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ˜„์ง€ํ™”๋Š” ์ˆซ์ž/ํ†ตํ™”/๋‚ ์งœ/์‹œ๊ฐ„ ํ˜•์‹์ด ์ง€์—ญ๋ณ„๋กœ ์ œ์–ด๋˜๋Š” ๋ฐ˜๋ฉด ์˜ฌ๋ฐ”๋ฅธ ์–ธ์–ด๋กœ ํ‘œ์‹œ๋˜๋„๋ก ์—…๋ฐ์ดํŠธ๋œ UI ๋ฌธ์ž์—ด์„ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ถ”๊ฐ€ ์ •๋ณด: https://docs.microsoft.com/en-us/globalization/locale/locale-and-culture. ๊ทธ๋ฆฌ๊ณ  ๋ฌธ์ œ๋ฅผ ๋ณต์žกํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด Windows์—์„œ๋Š” ๊ธฐ๋ณธ๊ฐ’์„ ์žฌ์ •์˜ํ•˜์—ฌ UI์—์„œ ๋กœ์บ˜ ์„ค์ •์„ ์‚ฌ์šฉ์ž ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์†Œ์ˆ˜์  ๊ตฌ๋ถ„ ๊ธฐํ˜ธ๋ฅผ ๊ธฐ๋ณธ๊ฐ’ ๋Œ€์‹  ์ž„์˜์˜ ๋ฌธ์ž๋กœ ์ง€์ •ํ•˜๊ณ  ์‹ถ๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฌด์—‡๋ณด๋‹ค๋„ .NET์„ ์‚ฌ์šฉํ•˜๋ฉด ์•ฑ์—์„œ ์ด๋ฅผ ์‚ฌ์šฉ์ž ์ง€์ •ํ•  ์ˆ˜๋„ ์žˆ์œผ๋ฏ€๋กœ ๊ฐœ๋ฐœ์ž๋Š” ์—ฌ๊ธฐ์—์„œ ํ•ด๋‹น ์ˆ˜์ค€์˜ ์‚ฌ์šฉ์ž ์ง€์ •์„ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค.

Language ๋Š” CultureInfo ๋กœ ๋ณ€ํ™˜๋˜๋Š” ๊ฐ’์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋น„๊ด€๋ฆฌ ์ฝ”๋“œ ๊ฐœ๋ฐœ์—์„œ๋Š” ๋ฌธํ™”๊ถŒ์„ ๋กœ์ผ€์ผ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ์†Œ์ˆ˜์ , ๊ทธ๋ฃนํ™”, ์Œ์ˆ˜ ๊ธฐํ˜ธ ๋“ฑ์— ๋Œ€ํ•œ ์†์„ฑ์ด ํฌํ•จ๋œ NumberFormatInfo ์œ ํ˜•์ธ NumberFormat ์†์„ฑ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

๋‚ด ์ดํ•ด๋Š” ์‹œ์Šคํ…œ ์„ค์ •์— ์˜์กดํ•˜์ง€ ์•Š๊ณ  ์ปจํŠธ๋กค์— ํŠน์ • ํ˜•์‹ ์ง€์ • ๋˜๋Š” ๊ธฐํƒ€ ํ˜„์ง€ํ™” ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ์ ์šฉํ•˜๋ ค๋Š” ๊ฒฝ์šฐ Language ๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์†์„ฑ์— ๋Œ€ํ•œ ์„ค๋ช…์€ "FrameworkElement์— ์ ์šฉ๋˜๋Š” ํ˜„์ง€ํ™”/์„ธ๊ณ„ํ™” ์–ธ์–ด ์ •๋ณด๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค"๋ผ๊ณ  ๋ช…ํ™•ํ•˜๊ฒŒ ๋ช…์‹œํ•ฉ๋‹ˆ๋‹ค.

๋˜๋Š” ๋‚ด๊ฐ€ ์ฐธ์กฐํ•˜๋Š” ๋ฌธ์„œ๋ฅผ ์ž˜๋ชป ์ดํ•ดํ–ˆ์ง€๋งŒ ๋งํฌ๋œ ํŽ˜์ด์ง€์—์„œ ๋‹ค๋ฃฌ ๋‚ด์šฉ์„ ๋ชจ๋‘ ๋’ท๋ฐ›์นจํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
๋‹ค๋ฅธ ์šฉ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” C++ ๋ฐ C#์˜ ์šฉ์–ด ๋ฌธ์ œ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋‚ด๊ฐ€ ์•„๋Š” ๊ฒƒ์€ XAML์—์„œ ์–ธ์–ด๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ๋‹ค๋ฅธ ์•ฑ๊ณผ ๋‹ค๋ฅธ ์ปจํŠธ๋กค์—์„œ ๋ฌธํ™”๊ถŒ/๋กœ์ผ€์ผ์„ ๊ฐ•์ œ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ˜„์ง€ํ™”์— ๊ด€ํ•ด ๋‚ด๊ฐ€ ๋ณธ ์งˆ๋ฌธ์€ ํŠน์ • ์ˆซ์ž ํ˜•์‹ ๋˜๋Š” ๊ทธ๋ฃน ๋ฐ ์†Œ์ˆ˜์  ๊ตฌ๋ถ„ ๊ธฐํ˜ธ๋ฅผ ๊ฐ•์ œํ•˜๋Š” ๊ฒƒ์— ๊ด€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์•„๋‹ˆ๋ฉด ์ปจํŠธ๋กค์˜ ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜ ์†์„ฑ(Header, PlaceholderText ๋“ฑ)์˜ ํ˜„์ง€ํ™”์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ณ  ์ด๋Ÿฌํ•œ ์ปจํŠธ๋กค์„ ์ œ์–ดํ•˜๋Š” โ€‹โ€‹์ง„์งœ ๋ฌธ์ œ์ž…๋‹ˆ๊นŒ?

Language ๋Š” CultureInfo ๋กœ ๋ณ€ํ™˜๋˜๋Š” ๊ฐ’์„ ์ทจํ•ฉ๋‹ˆ๋‹ค.

๋„ค์ดํ‹ฐ๋ธŒ/WinRT์—๋Š” ์—†๊ณ  BCP-47 langs ๋ฌธ์ž์—ด๋งŒ ์–ป์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์ด ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. .NET์—์„œ๋Š” ์–ธ์–ด ์„ค์ • ๊ณผ ํ˜•์‹ ์„ค์ •์ด ์žˆ๋Š” CultureInfo๋ฅผ ๋ฌถ์Šต๋‹ˆ๋‹ค. WinRT์—์„œ๋Š” ๋ณ„๊ฐœ์ด๋ฉฐ CultureInfo ๊ฐœ์ฒด์— ํ•ด๋‹นํ•˜๋Š” ๊ฒƒ์ด ์—†์Šต๋‹ˆ๋‹ค.

ICU API ๊ฐ€ ์šฐ๋ฆฌ๊ฐ€ ์ฐพ๊ณ  ์žˆ๋Š” ๊ฒƒ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๋“ค์—ˆ์ง€๋งŒ ์•„์ง ์กฐ์‚ฌํ•  ๊ธฐํšŒ๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ๊ฐ€ ์ด๊ฒƒ์— ๋Œ€ํ•œ ์ด์•Œ์„ ๊นจ๊ณ  .net ๋ฌธํ™”/ํ˜„์ง€ํ™”(CultureInfo)์™€ ๋„ค์ดํ‹ฐ๋ธŒ/WinRT ๊ฐ„์˜ ๋ณ€ํ™˜ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์™„์ „ํžˆ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด์ƒ์ ์œผ๋กœ๋Š” ์ผ์„ ํ•˜๋Š” ์ƒˆ๋กœ์šด ๋ฐฉ์‹์„ ๊ณ ๋ คํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ด€๋ฆฌ ์ฝ”๋“œ๋Š” ๋Œ€๋ถ€๋ถ„์˜ LOB ์•ฑ์ด ์ž‘์„ฑ๋˜๋Š” ๊ฒƒ์œผ๋กœ ์ฒ˜์Œ๋ถ€ํ„ฐ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. WinRT๋Š” .net๊ณผ ๋™์ผํ•œ ํ˜„์ง€ํ™” ๋ฉ”์ปค๋‹ˆ์ฆ˜/๊ธฐ์ˆ ์„ ๊ฐ€์ ธ์™€์•ผ ํ•˜๋ฉฐ ๋ณ€ํ™˜์€ ์ž๋™์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ›จ์”ฌ ๋” ๋งŽ์€ ์ž‘์—…์ด ๋ ๊นŒ์š”? ๋‹จ๊ธฐ: ์˜ˆ, ์žฅ๊ธฐ: ์•„๋‹ˆ์˜ค. ๊ทธ๋Ÿฌ๋ฉด NumberBox ์ปจํŠธ๋กค์˜ ๋ฆด๋ฆฌ์Šค๊ฐ€ ์ง€์—ฐ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์ฝœ๋ฐฑ์ด ๋‹จ๊ธฐ๊ฐ„์— ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ํ•œ ์•„๋งˆ๋„.

์ด๊ฒƒ์€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋‹ค๋ฅธ ๊ณณ์—์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํŽธ์ง‘ ๊ฐ€๋Šฅํ•œ CalendarDatePicker ๋“ฑ๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ์ด๋ฏธ ์œ ์‚ฌํ•œ ๋ฌธ์ œ๋ฅผ ์˜ˆ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (#735)

@savoySchuler @jevansaks @chigy @mrlacey @KevinTXY
๋ถ„๋ช…ํžˆ FastDNA ํŒ€์€ ์ž…๋ ฅ ๋ฒˆํ˜ธ ํ•„๋“œ ๋””์ž์ธ์„ ์œ„ํ•œ Spinner ์ปจํŠธ๋กค์— ๋Œ€ํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ๊ณ ๋ คํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ๋Š” ์ œ์•ˆ์„ ๋‚ด๋†“์•˜์Šต๋‹ˆ๋‹ค.

image

๋˜ํ•œ Arrow๊ฐ€ ์•„๋‹Œ โ€‹โ€‹Chevron์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ์— ๋Œ€ํ•ด์„œ๋„ ์งˆ๋ฌธํ–ˆ์Šต๋‹ˆ๋‹ค.

https://github.com/microsoft/fast-dna/issues/2202

๋ฒ„ํŠผ์„ ๋‚˜๋ž€ํžˆ ๋†“๊ณ  ์Šคํƒ ํ™•์žฅ ๋””์ž์ธ์„ ํ˜ธ๋ฒ„๋กœ ์‚ฌ์šฉํ•˜๋ฉด ์ปจํŠธ๋กค ๋„ˆ๋น„๊ฐ€ ๋„ˆ๋ฌด ์ข์„ ๋•Œ ์•„์ด๋””์–ด๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋ชจ๋“  Microsoft UI ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์ž‘๋™ํ•˜๋Š” ๋ ˆ์ด์•„์›ƒ์— ๋Œ€ํ•œ ํ•ฉ์˜๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@mdtauk , ์•Œ๋ ค์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.
์ด๊ฒƒ์ด ํ…Œ์ŠคํŠธํ•˜๊ณ  ์œ ์šฉ์„ฑ์„ ๊ฒ€์ฆํ•˜๋Š” ๋””์ž์ธ์ธ์ง€ FastDNA ์‚ฌ๋žŒ๋“ค๊ณผ ํ•จ๊ป˜ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

NumberBox๋กœ ๋Œ์•„๊ฐ€๊ธฐ

์ข‹์•„ ํŒ€,

์˜ˆ์ƒ์น˜ ๋ชปํ•œ ํœด์‹์— ๋Œ€ํ•ด ์‚ฌ๊ณผ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ €๋Š” NumberBox ํ’€ ์Šค๋กœํ‹€๋กœ ๋Œ์•„ ๊ฐ”๊ณ  @teaP ๊ฐ€ ์ €์™€ ํ•จ๊ป˜ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ์ž๋กœ ํ•ฉ๋ฅ˜ํ–ˆ์Šต๋‹ˆ๋‹ค! ์šฐ๋ฆฌ๋Š” ์ด ์ปจํŠธ๋กค์˜ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ๋ฅผ ์œ„ํ•ด ์—ฌ์ „ํžˆ 11์›” ๋ง์„ ๋ชฉํ‘œ๋กœ ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ WinUI 2.4๊ฐ€ ํฌํ•จ๋œ ์•ˆ์ •์ ์ธ ๋ฆด๋ฆฌ์Šค๋ฅผ ๋ณด๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด์ „ ์›Œํฌํ”Œ๋กœ์—๋Š” ๋งŽ์€ ์ง์ด ์žˆ์œผ๋ฏ€๋กœ ๋ฏธํ•ด๊ฒฐ ์งˆ๋ฌธ์ด๋‚˜ ๋‹ต๋ณ€๋œ ์งˆ๋ฌธ์„ ๋ณด์กดํ•˜๊ณ  @teaP ์™€ ๋‚ด๊ฐ€ ๋‹ค์Œ์— ๊ด€ํ•œ ๋‚˜๋จธ์ง€ ๋ฏธํ•ด๊ฒฐ ์ฃผ์ œ ํ•ด๊ฒฐ์„ ๋งˆ์น˜๋Š” ์ƒˆ๋กœ์šด ์‚ฌ์–‘ PR๋กœ ํฌํŒ…ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  • ํ˜„์ง€ํ™”
  • ๋””์ž์ธ(ํŠนํžˆ ์œ„/์•„๋ž˜ ๋ฒ„ํŠผ๊ณผ ๊ด€๋ จํ•˜์—ฌ)
  • ํ•˜์ดํผ์Šคํฌ๋กค/ํ•˜์ดํผ๋“œ๋ž˜๊ทธ

์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ํ•ญ๋ชฉ์ด ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. @LucasHaines ' ์ž…๋ ฅ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ์ž‘์—…์ด WinUI 3.0 ๋ฐ ๊ทธ ์ „์— NumberBox ๊ณ„ํš ๋ฆด๋ฆฌ์Šค์— ๋Œ€ํ•ด ์˜ˆ์ •๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ NumberBox V1์—์„œ ์ง€์›๋˜๋Š” ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๋ชจ๋“œ๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ค„์˜€์Šต๋‹ˆ๋‹ค.

์—ด๊ฑฐํ˜• NumberBoxBasicValidationMode
{
์žฅ์• ๊ฐ€์žˆ๋Š”,
InvalidInput๋ฎ์–ด์“ฐ๊ธฐ,
};

WinUI 3.0 ๋ฐ ํ•„์ˆ˜ ์ž…๋ ฅ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ์ž‘์—…์ด ์‹œ์ž‘๋˜๋ฉด NumberBox V2์—์„œ ์›๋ž˜ ๊ณ„ํš๋œ IconMessage ๋ฐ TextBlockMessage ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๋ชจ๋“œ๋กœ ํ•ด๋‹น ์—ด๊ฑฐํ˜•์„ ํ™•์žฅํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์ด์ œ ์ด์ „ ์ง„ํ–‰ ์ƒํ™ฉ์„ ๋ชจ๋‘ ์ •๋ฆฌํ•˜๊ณ  ๊ด€๋ จ ์งˆ๋ฌธ์„ ๊ฒŒ์‹œํ•˜๊ณ  ํ”ผ๋“œ๋ฐฑ์„ ์š”์ฒญํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•จ๊ป˜ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๐Ÿ˜„

ํœด. ์ด ์ผ์„ ์Šค์Šค๋กœ ํ•˜๋ ค๊ณ  ํ•˜๋Š” ๊ฒƒ์ด ๋‚˜์—๊ฒŒ ๊ฐ€๊นŒ์›Œ์ง€๊ณ  ์žˆ์—ˆ๋‹ค.

ใ…Žใ…Ž ์ˆ˜๋™์ ์œผ๋กœ ๊ณ„์† ํ–ˆ์œผ๋ฉด ์ข‹์•˜์„ํ…๋ฐ ์ด๋ฒˆ ํ•™๊ธฐ๊ฐ€ ์ €๋ฅผ ์ง€์น˜๊ฒŒ ํ•˜๋„ค์š”. ์™„๊ฒฐ์ด ๋‚œ๊ฑฐ ๋ณด๋‹ˆ ๋‹คํ–‰์ด๋„ค์š” ๊ณ„์† ์ง€์ผœ๋ด์•ผ๊ฒ ์Šต๋‹ˆ๋‹ค!

์ง€๊ธˆ NumberBox์˜ ์ดˆ๊ธฐ ์ปค๋ฐ‹์ด ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค!

์ œ๋ฐœ - ์ด๊ฒƒ์€ ์—ฌ์ „ํžˆ dev ๋ฐ PM ์ธก ๋ชจ๋‘์—์„œ ํ™œ์„ฑ ๋ฌธ์ œ ์ถ”์ ๊ณผ ํ•จ๊ป˜ ์ง„ํ–‰ ์ค‘์ธ ์ž‘์—…์ž„์„ ๋ช…์‹ฌํ•˜์‹ญ์‹œ์˜ค. ์ ์ ˆํ•œ ๋งํฌ์—์„œ ์•„์ง ์–ธ๊ธ‰๋˜์ง€ ์•Š์€ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ๋ฒ„๊ทธ๋‚˜ ์ผ๋ฐ˜์ ์ธ ๋Š์Šจํ•œ ๋์„ ๋ฐœ๊ฒฌํ•˜๋ฉด ์ €ํฌ์—๊ฒŒ ์•Œ๋ ค์ฃผ์‹ญ์‹œ์˜ค. ๐Ÿ˜Š

@SavoySchuler , ์‚ฌ์–‘์— ๋Œ€ํ•œ ์ƒˆ PR์„ ์—ด๊ฒ ์Šต๋‹ˆ๊นŒ? ๋˜ํ•œ, ํŠนํžˆ NaN ๋””์Šคํ”Œ๋ ˆ์ด์™€ ๊ด€๋ จํ•˜์—ฌ ์ด ๋Œ“๊ธ€ ์—์„œ ์ œ๊ฐ€ ์“ด ๋‚ด์šฉ์„ ํ™•์ธํ•˜์…จ์Šต๋‹ˆ๊นŒ? ๊ฐ์‚ฌ ํ•ด์š”.

@SavoySchuler ์ง€๊ธˆ๊นŒ์ง€ ์‚ฌ์–‘/NumberBox ์ฝ”๋“œ์— ๋Œ€ํ•œ ๋ช‡ ๊ฐ€์ง€ ์˜๊ฒฌ. ๋ฐ”๋ผ๊ฑด๋Œ€, ์ด๊ฒƒ์— ๋Œ€ํ•œ ์˜๊ฒฌ์€ ์‚ฌ์–‘/๋ฌธ์„œ์—๋„ ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ „๋ฐ˜์ ์œผ๋กœ, ์ด๊ฒƒ์ด ํ•จ๊ป˜ ์˜ค๋Š” ๊ฒƒ์„ ๋ณด๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค!

๋‹จ๊ณ„ ์ฃผํŒŒ์ˆ˜

์—ฌ๊ธฐ์„œ '๋นˆ๋„'๋ผ๋Š” ๋‹จ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์ €์™€ ์–ด์šธ๋ฆฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์Šฌ๋ผ์ด๋” ์ปจํŠธ๋กค์—์„œ TickFrequency๋Š” ํ‹ฑ์ด ์ „์ฒด ์ตœ๋Œ€-์ตœ์†Œ ๋ฒ”์œ„์˜ ๊ณ„์ˆ˜๋กœ ๊ณ„์‚ฐ๋˜๊ณ  ํ‘œ์‹œ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ์ปจํŠธ๋กค์—์„œ๋Š” ์ฆ๋ถ„/๋‹จ๊ณ„ ํฌ๊ธฐ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. 'StepAmount' ๋˜๋Š” 'StepValue'์— ๊ฐ€๊น์Šต๋‹ˆ๋‹ค. 'MinimumValue' ๋Œ€์‹  'Minimum'๊ณผ ์œ ์‚ฌํ•œ 'Step'์ด ๋” ๋‚ซ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ์‚ฌ์šฉ์ž๊ฐ€ ์ •์˜๋œ ๋‹จ๊ณ„๋ฅผ ๋ฒ—์–ด๋‚œ ๊ฐ’์„ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
์˜ˆ๋ฅผ ๋“ค์–ด Minimum = 0, Maximum = 6, StepFrequency = 2์ž…๋‹ˆ๋‹ค. ์œ„์ชฝ ํ™”์‚ดํ‘œ ๊ฐ’์„ ์‚ฌ์šฉํ•˜๋ฉด {2, 4, 6}์ด ์ถฉ๋ถ„ํžˆ ๊ณต์ •ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์œ ํšจํ•œ ๊ฐ’์œผ๋กœ 0.5๋ฅผ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด 0 ๋˜๋Š” 2๋กœ ๋ฐ˜์˜ฌ๋ฆผ๋ฉ๋‹ˆ๊นŒ?

๋ฐ˜์˜ฌ๋ฆผ

์ˆ˜ํ•™์  ๋ฐ˜์˜ฌ๋ฆผ์€ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๊นŒ? ์ด๋Š” ํ‘œํ˜„์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ํ†ตํ™” ๊ฐ’์„ ์ž…๋ ฅํ•  ๋•Œ ํŠนํžˆ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ํ‘œํ˜„์‹์ด ๊ณ„์‚ฐ๋œ ํ›„ ์‚ฌ์šฉ์ž ์ง€์ • ๋ฐ˜์˜ฌ๋ฆผ์„ ์ง€์ •ํ•˜๊ฑฐ๋‚˜ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. HalfAwayFromZero๋Š” ์‹œ์ž‘ํ•˜๋ ค๊ณ  ํ•˜๋Š” ๊ฒƒ์ด์ง€๋งŒ ๋‹ค๋ฅธ ๋ฐ˜์˜ฌ๋ฆผ ๋ชจ๋“œ๋„ ํ—ˆ์šฉ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ˜„์ง€ํ™”

NumberBox๊ฐ€ ๋ชจ๋“  INumberFormatter/ INumberFormatter2 ๊ตฌํ˜„์„ ํ—ˆ์šฉํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์•ž์œผ๋กœ๋„ ๊ณ„์† ๊ทธ๋ ‡๊ฒŒ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค(์ฝ”๋“œ์—์„œ ๊ตฌํ˜„๋˜๋Š” ๋ฐฉ์‹์ด๋ฏ€๋กœ ์‚ฌ์–‘์—์„œ๋„ ํ˜ธ์ถœํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค). ์ด๋ฅผ ํ†ตํ•ด ๊ธฐ์กด CurrencyFormatter/DecimalFormatter๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ๋น„๊ตํ•˜์—ฌ ํ…์ŠคํŠธ ํ˜„์ง€ํ™”๋ฅผ ์™„์ „ํžˆ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์ด์— ๋Œ€ํ•œ ์†”๋ฃจ์…˜์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค!

ํ…์ŠคํŠธ ์ค„ ๋ฐ”๊ฟˆ

ํŽธ์ง‘: ๋‹ค์Œ ๋ฒˆ์— ์ „์ฒด ์‚ฌ์–‘์„ ์ฝ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ƒˆ 'IsWrapEnabled' ์†์„ฑ์„ ๋งŒ๋“  ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? NumberBox์— 'ํ…์ŠคํŠธ'๋ผ๋Š” ์šฉ์–ด๊ฐ€ ์ž˜ ์ ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ๋Š๋ผ๊ธฐ ๋•Œ๋ฌธ์ธ๊ฐ€์š”?

๋˜ํ•œ Wrap๊ณผ WrapWithOverflow๊ฐ€ ๋ชจ๋‘ ๋™์ผํ•˜๊ฒŒ ๊ตฌํ˜„๋˜์ง€๋งŒ ๋‘ ์—ด๊ฑฐํ˜• ๊ฐ’์ด ๋™์ผํ•˜๋„๋ก ํ—ˆ์šฉํ•˜๊ณ  ์„ค๋ช…์„œ์˜ ๊ธฐ๋Šฅ์„ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค.

KeyboardAccelerator๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ฒ˜๋ฆฌ

์ด ์ปจํŠธ๋กค์ด TextBox๋ณด๋‹ค ํ‚ค๋ณด๋“œ ๊ฐ€์†๊ธฐ ์‚ฌ์šฉ์„ ๋” ์ž˜ ์ง€์›ํ•˜๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. ์•„๋งˆ๋„ TextBox๊ฐ€ ์ˆ˜์ •๋  ๋•Œ๊นŒ์ง€/๋งŒ์ผ ์ˆ˜ ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ #1435๋Š” ์ •๋ง ๋งŽ์€ ์ถ”์•…ํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์œ ๋ฐœํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. TextBox๋Š” 'Ctrl+V' ๋ถ™์—ฌ๋„ฃ๊ธฐ ์ž์ฒด๋ฅผ ์ฒ˜๋ฆฌํ•œ ๋‹ค์Œ ๋ชจ๋“  KeyboardAccelerator๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ KeyboardAccelerator ๋‚ด์—์„œ๋Š” TextBox๊ฐ€ ์ž์ฒด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ–ˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—†์Šต๋‹ˆ๋‹ค.

๋น ๋ฅธ ์ƒ๊ฐ. ๊ฐ’์— ๊ฐ๋„ ๊ธ€๋ฆฌํ”„๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฐ๋„ ๋ชจ๋“œ ๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(360ยฐ ๋žฉ ์–ด๋ผ์šด๋“œ์— ๋Œ€ํ•œ ๋…ผ๋ฆฌ).

ยฐ

์•„๋‹ˆ๋ฉด ์ด ๋ถ€๋ก์ด TextBox #784์— ๋Œ€ํ•œ ๋‚ด ์ ‘๋ฏธ์‚ฌ ์ œ์•ˆ์œผ๋กœ ์•ž์œผ๋กœ ๋” ์ž˜ ์ฒ˜๋ฆฌ๋  ๊ฒƒ์ž…๋‹ˆ๊นŒ?

@mdtauk ,

๋ž˜ํ•‘์˜ ๊ฒฝ์šฐ ์‹ค์ œ๋กœ IsWrapEnabled ์†์„ฑ์˜ ์šฉ๋„์ž…๋‹ˆ๋‹ค... ๋‹ค์Œ์— ๋ฌธ์„œ์˜ ๋ ๋ถ€๋ถ„์„ ์ฝ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ฒฐ๋ก ์€ ๊ธฐ์กด API๋กœ ์›ํ•˜๋Š” ๋ชจ๋“  ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@mdtauk ,

๋ž˜ํ•‘์˜ ๊ฒฝ์šฐ ์‹ค์ œ๋กœ IsWrapEnabled ์†์„ฑ์˜ ์šฉ๋„์ž…๋‹ˆ๋‹ค... ๋‹ค์Œ์— ๋ฌธ์„œ์˜ ๋ ๋ถ€๋ถ„์„ ์ฝ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ฒฐ๋ก ์€ ๊ธฐ์กด API๋กœ ์›ํ•˜๋Š” ๋ชจ๋“  ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” Min, Max, Wrap์ด ๊ทธ๊ฒƒ์„ ์ฒ˜๋ฆฌํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ, Degrees๋Š” ์ƒ์ž์— ๋Œ€ํ•œ ๋ช…์‹œ์ ์ธ Angle ๋ชจ๋“œ๋ฅผ ๊ฐ€์งˆ ๋งŒํผ ์ถฉ๋ถ„ํžˆ ์ผ๋ฐ˜์ ์ž…๋‹ˆ๊นŒ? ๊ทธ๋ฆฌ๊ณ  ๋‚ด๋ถ€ ๊ฐ’์€ ์ˆซ์ž์ผ ๋ฟ์ด๊ณ  TextBox ํ…์ŠคํŠธ์— ๊ธฐํ˜ธ๋ฅผ ํ‘œ์‹œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@teaP ์ƒˆ๋กœ์šด Compact SpinButtonMode๋ฅผ ๋ณด๋ฉด ์˜ค๋ฒ„๋ ˆ์ด๋œ ์Šคํ•€ ๋ฒ„ํŠผ์— ํ‘œ์‹œ ๋ฐ ์ˆจ๊ธฐ๊ธฐ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋˜ํ•œ ComboBox ๋ฐ ๊ธฐํƒ€ ์–‘์‹ ํ•„๋“œ๋ฅผ ํ”Œ๋ผ์ด์•„์›ƒ ์š”์†Œ์™€ ๋” ์ž˜ ์ผ์น˜์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์—ฌ๊ธฐ์— ์•„ํฌ๋ฆด์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•˜์…จ์Šต๋‹ˆ๊นŒ?

ํŽธ์ง‘: ๋‹คํฌ ํ…Œ๋งˆ์—์„œ ์ด ๊ฐ€์‹œ์„ฑ ๋ฌธ์ œ๋ฅผ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค. TextBox์˜ ์ดˆ์  ์ƒ‰์ƒ๊ณผ ์ผ์น˜์‹œํ‚ค๋ ค๋Š” ์˜๋„์ž…๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด ํ˜„์žฌ ํ…Œ๋งˆ ์ƒ‰์ƒ๊ณผ ์ผ์น˜์‹œํ‚ค๋ ค๋Š” ์˜๋„์ž…๋‹ˆ๊นŒ? ์–ด์จŒ๋“  ์•„ํฌ๋ฆด์€ ์ด๊ฒƒ์„ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

image

@SavoySchuler , ์‚ฌ์–‘์— ๋Œ€ํ•œ ์ƒˆ PR์„ ์—ด๊ฒ ์Šต๋‹ˆ๊นŒ? ๋˜ํ•œ, ํŠนํžˆ NaN ๋””์Šคํ”Œ๋ ˆ์ด์™€ ๊ด€๋ จํ•˜์—ฌ ์ด ๋Œ“๊ธ€ ์—์„œ ์ œ๊ฐ€ ์“ด ๋‚ด์šฉ์„ ํ™•์ธํ•˜์…จ์Šต๋‹ˆ๊นŒ? ๊ฐ์‚ฌ ํ•ด์š”.

@adrientetar ํ™•์‹คํ•ฉ๋‹ˆ๋‹ค. NumberBox๊ฐ€ ๋น„์–ด ์žˆ์œผ๋ฉด Value ๊ฐ€ NaN(์š”์ฒญํ•œ ๋Œ€๋กœ)์œผ๋กœ ์„ค์ •๋˜๊ณ  PlaceholderText ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

@SavoySchuler ์ง€๊ธˆ๊นŒ์ง€ ์‚ฌ์–‘/NumberBox ์ฝ”๋“œ์— ๋Œ€ํ•œ ๋ช‡ ๊ฐ€์ง€ ์˜๊ฒฌ. ๋ฐ”๋ผ๊ฑด๋Œ€, ์ด๊ฒƒ์— ๋Œ€ํ•œ ์˜๊ฒฌ์€ ์‚ฌ์–‘/๋ฌธ์„œ์—๋„ ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ „๋ฐ˜์ ์œผ๋กœ, ์ด๊ฒƒ์ด ํ•จ๊ป˜ ์˜ค๋Š” ๊ฒƒ์„ ๋ณด๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค!

๋‹จ๊ณ„ ์ฃผํŒŒ์ˆ˜

์—ฌ๊ธฐ์„œ '๋นˆ๋„'๋ผ๋Š” ๋‹จ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์ €์™€ ์–ด์šธ๋ฆฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์Šฌ๋ผ์ด๋” ์ปจํŠธ๋กค์—์„œ TickFrequency๋Š” ํ‹ฑ์ด ์ „์ฒด ์ตœ๋Œ€-์ตœ์†Œ ๋ฒ”์œ„์˜ ๊ณ„์ˆ˜๋กœ ๊ณ„์‚ฐ๋˜๊ณ  ํ‘œ์‹œ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ์ปจํŠธ๋กค์—์„œ๋Š” ์ฆ๋ถ„/๋‹จ๊ณ„ ํฌ๊ธฐ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. 'StepAmount' ๋˜๋Š” 'StepValue'์— ๊ฐ€๊น์Šต๋‹ˆ๋‹ค. 'MinimumValue' ๋Œ€์‹  'Minimum'๊ณผ ์œ ์‚ฌํ•œ 'Step'์ด ๋” ๋‚ซ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด ํ”ผ๋“œ๋ฐฑ์„ @MikeHillberg ์™€ ๊ณต์œ ํ–ˆ์œผ๋ฉฐ ์šฐ๋ฆฌ๋Š” ์ง€๊ธˆ ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์˜ ๋‹ค๋ฅธ ๋ชจ๋“  ์†์„ฑ ์ค‘์—์„œ ์ž์ฒด ๋ฌธ์„œํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์šฐ๋ฆฌ๋Š” ์ด ์ถ”๋ก ์ด ์ผํƒˆํ•  ๋งŒํผ ์ถฉ๋ถ„ํžˆ ์ •๋‹นํ™”๋˜์–ด์•ผ ํ•˜๋Š” "SpinButtonStep" ๋ผ์ธ์„ ๋”ฐ๋ผ ๋ฌด์–ธ๊ฐ€๋ฅผ ๊ณ ๋ คํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์•Œ๋ ค ์ฃผ๋งˆ. ์ง€์ ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

๋˜ํ•œ ์‚ฌ์šฉ์ž๊ฐ€ ์ •์˜๋œ ๋‹จ๊ณ„๋ฅผ ๋ฒ—์–ด๋‚œ ๊ฐ’์„ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
์˜ˆ๋ฅผ ๋“ค์–ด Minimum = 0, Maximum = 6, StepFrequency = 2์ž…๋‹ˆ๋‹ค. ์œ„์ชฝ ํ™”์‚ดํ‘œ ๊ฐ’์„ ์‚ฌ์šฉํ•˜๋ฉด {2, 4, 6}์ด ์ถฉ๋ถ„ํžˆ ๊ณต์ •ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์œ ํšจํ•œ ๊ฐ’์œผ๋กœ 0.5๋ฅผ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด 0 ๋˜๋Š” 2๋กœ ๋ฐ˜์˜ฌ๋ฆผ๋ฉ๋‹ˆ๊นŒ?

์‚ฌ์šฉ์ž๋Š” ์›ํ•˜๋Š” ์ˆซ์ž ๋˜๋Š” ๋ฒ•์  ๊ณต์‹ ์ž…๋ ฅ์„ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. NumberFormatter ์†์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๋‹น ์ž…๋ ฅ์„ ๊ตฌ์„ฑ๋œ ํ˜•์‹์œผ๋กœ ๊ฐ•์ œ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์˜ˆ์ œ๋Š” ํ˜•์‹ ์ง€์ • ์„น์…˜์„ ์ฐธ์กฐํ•˜์„ธ์š”.

SpinButton์€ ์ •์˜๋œ SpinButton ๋‹จ๊ณ„ ํฌ๊ธฐ(API ์ด๋ฆ„์€ ํ˜„์žฌ ๋ณด๋ฅ˜ ์ค‘)๋งŒํผ๋งŒ ํ•ด๋‹น ๊ฐ’์„ ๋Š˜๋ฆฌ๊ฑฐ๋‚˜ ์ค„์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ž˜ ์–ด์šธ๋ฆฌ๋Š” ํ˜•์‹๊ณผ ๋‹จ๊ณ„ ํฌ๊ธฐ๋ฅผ ๊ตฌ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ๋œ ๋ฐ˜์˜ฌ๋ฆผ ์ „๋žต์€ ์„œ์‹์„ ํ†ตํ•ด ์ •์˜๋ฉ๋‹ˆ๋‹ค. DecimalFormatter ์˜ˆ๋ฅผ ์ƒ์„ธํžˆ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด, ์—ฌ๊ธฐ์— ์‚ฌ์šฉ์ž๊ฐ€ ๊ตฌ์„ฑ ํ•  ์ˆ˜์žˆ๋Š” ๋ผ์šด๋”ฉ ํŠน์„ฑ์˜ ์˜ˆ์ž…๋‹ˆ๋‹ค.

๋ฐ˜์˜ฌ๋ฆผ

์ˆ˜ํ•™์  ๋ฐ˜์˜ฌ๋ฆผ์€ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๊นŒ? ์ด๋Š” ํ‘œํ˜„์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ํ†ตํ™” ๊ฐ’์„ ์ž…๋ ฅํ•  ๋•Œ ํŠนํžˆ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ํ‘œํ˜„์‹์ด ๊ณ„์‚ฐ๋œ ํ›„ ์‚ฌ์šฉ์ž ์ง€์ • ๋ฐ˜์˜ฌ๋ฆผ์„ ์ง€์ •ํ•˜๊ฑฐ๋‚˜ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. HalfAwayFromZero๋Š” ์‹œ์ž‘ํ•˜๋ ค๊ณ  ํ•˜๋Š” ๊ฒƒ์ด์ง€๋งŒ ๋‹ค๋ฅธ ๋ฐ˜์˜ฌ๋ฆผ ๋ชจ๋“œ๋„ ํ—ˆ์šฉ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ฐ˜์˜ฌ๋ฆผ์€ ์„œ์‹์„ ํ†ตํ•ด ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ์€ DecimalFormatter์— ๋Œ€ํ•ด ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ˜์˜ฌ๋ฆผ ์†์„ฑ์˜ ์˜ˆ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ๋ณด๋‹ค ๋ช…ํ™•ํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ์ง€์นจ์— ์˜ˆ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‹ค์‹œ ํ•œ๋ฒˆ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๐Ÿ˜Š

ํ˜„์ง€ํ™”

NumberBox๊ฐ€ ๋ชจ๋“  INumberFormatter/ INumberFormatter2 ๊ตฌํ˜„์„ ํ—ˆ์šฉํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์•ž์œผ๋กœ๋„ ๊ณ„์† ๊ทธ๋ ‡๊ฒŒ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค(์ฝ”๋“œ์—์„œ ๊ตฌํ˜„๋˜๋Š” ๋ฐฉ์‹์ด๋ฏ€๋กœ ์‚ฌ์–‘์—์„œ๋„ ํ˜ธ์ถœํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค). ์ด๋ฅผ ํ†ตํ•ด ๊ธฐ์กด CurrencyFormatter/DecimalFormatter๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ๋น„๊ตํ•˜์—ฌ ํ…์ŠคํŠธ ํ˜„์ง€ํ™”๋ฅผ ์™„์ „ํžˆ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์ด์— ๋Œ€ํ•œ ์†”๋ฃจ์…˜์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค!

๊ทธ๊ฒƒ์ด ํ˜„์žฌ ๊ตฌํ˜„์˜ ์˜๋„์ž…๋‹ˆ๋‹ค. ๋ฏธ๋ž˜ ๋ณด์žฅ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด NumberBox๋Š” ํ˜„์ง€ํ™” ๋ฐ ์„œ์‹ ์š”๊ตฌ ์‚ฌํ•ญ์— ๋Œ€ํ•œ ์†”๋ฃจ์…˜์„ ๊ณ„์† ๋ณด์œ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ˜„์žฌ์™€ โ€‹โ€‹๊ฐ€๊นŒ์šด ์žฅ๋ž˜์— ์ด๋ฅผ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ…์ŠคํŠธ ์ค„ ๋ฐ”๊ฟˆ

ํŽธ์ง‘: ๋‹ค์Œ ๋ฒˆ์— ์ „์ฒด ์‚ฌ์–‘์„ ์ฝ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

~์ƒˆ 'IsWrapEnabled' ์†์„ฑ์„ ๋งŒ๋“  ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์ด๊ฒƒ์€ TextBlock.TextWrapping ๋ฐ TextWrapping Enum์„ ์‚ฌ์šฉํ•˜๋Š” TextBox/XAML ๊ทœ์น™์— ์œ„๋ฐฐ๋ฉ๋‹ˆ๋‹ค. NumberBox์— 'ํ…์ŠคํŠธ'๋ผ๋Š” ์šฉ์–ด๊ฐ€ ์ž˜ ์–ด์šธ๋ฆฌ์ง€ ์•Š๋Š”๋‹ค๊ณ  ๋Š๋ผ๊ธฐ ๋•Œ๋ฌธ์ธ๊ฐ€์š”?~

~๋˜ํ•œ Wrap๊ณผ WrapWithOverflow๊ฐ€ ๋ชจ๋‘ ๋™์ผํ•˜๊ฒŒ ๊ตฌํ˜„๋˜์—ˆ์ง€๋งŒ ๋‘ ์—ด๊ฑฐํ˜• ๊ฐ’์ด ๋™์ผํ•˜๋„๋ก ํ—ˆ์šฉํ•˜๊ณ  ์„ค๋ช…์„œ์˜ ๊ธฐ๋Šฅ์„ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— ์ƒˆ ์†์„ฑ์„ ์ƒ์„ฑํ•˜๋ฉด ์ƒˆ๋กœ์šด ๊ฐ’ ๋ณ€ํ™˜๊ธฐ ๋“ฑ์ด ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด ๊ทœ์น™์„ ๊นจ๋œจ๋ฆด ์ด์œ ๊ฐ€ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.~

KeyboardAccelerator๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ฒ˜๋ฆฌ

์ด ์ปจํŠธ๋กค์ด TextBox๋ณด๋‹ค ํ‚ค๋ณด๋“œ ๊ฐ€์†๊ธฐ ์‚ฌ์šฉ์„ ๋” ์ž˜ ์ง€์›ํ•˜๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. ์•„๋งˆ๋„ TextBox๊ฐ€ ์ˆ˜์ •๋  ๋•Œ๊นŒ์ง€/๋งŒ์ผ ์ˆ˜ ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ #1435๋Š” ์ •๋ง ๋งŽ์€ ์ถ”์•…ํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์œ ๋ฐœํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. TextBox๋Š” 'Ctrl+V' ๋ถ™์—ฌ๋„ฃ๊ธฐ ์ž์ฒด๋ฅผ ์ฒ˜๋ฆฌํ•œ ๋‹ค์Œ ๋ชจ๋“  KeyboardAccelerator๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ KeyboardAccelerator ๋‚ด์—์„œ๋Š” TextBox๊ฐ€ ์ž์ฒด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ–ˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—†์Šต๋‹ˆ๋‹ค.

NumberBox๋Š” TextBox๋ฅผ ํฌํ•จํ•˜๊ณ  ๊ทธ ์œ„์— ์†์„ฑ๊ณผ ๊ตฌ์„ฑ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๋” ํฌ๊ด„์ ์ธ ์ดํ•ด๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ @jevan์— ํƒœ๊ทธ๋ฅผ ์ง€์ •


๊ฒฐ๊ตญ, ๋ฉ‹์ง„ ํ”ผ๋“œ๋ฐฑ @roblo! V1 NumberBox๊ฐ€ ๊ฐ€๋Šฅํ•œ ํ•œ ํฌ๊ด„์ ์ด๊ณ  ์™„์ „ํ•œ์ง€ ํ™•์ธํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์„ ํ• ์• ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ๋” ๊ถ๊ธˆํ•œ ์ ์ด ์žˆ์œผ๋ฉด ์•Œ๋ ค์ฃผ์„ธ์š”. ๐Ÿ˜Š

@mdtauk

๋น ๋ฅธ ์ƒ๊ฐ. ๊ฐ’์— ๊ฐ๋„ ๊ธ€๋ฆฌํ”„๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฐ๋„ ๋ชจ๋“œ ๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(360ยฐ ๋žฉ ์–ด๋ผ์šด๋“œ์— ๋Œ€ํ•œ ๋…ผ๋ฆฌ).

ยฐ

์•„๋‹ˆ๋ฉด ์ด ๋ถ€๋ก์ด TextBox #784์— ๋Œ€ํ•œ ๋‚ด ์ ‘๋ฏธ์‚ฌ ์ œ์•ˆ์œผ๋กœ ์•ž์œผ๋กœ ๋” ์ž˜ ์ฒ˜๋ฆฌ๋  ๊ฒƒ์ž…๋‹ˆ๊นŒ?

์ง€๊ธˆ๊นŒ์ง€ NumberBox๋Š” ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๋ฌธ์ž์˜ ํ‘œ์‹œ๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(ํ‘œํ˜„์‹ ํ‰๊ฐ€ ์‹œ ๊ณต์‹ ๋ฌธ์ž๋„ ์ œ๊ฑฐ๋จ).

#784์— ๋Œ€ํ•œ ๊ท€ํ•˜์˜ ์ œ์•ˆ์€ ์ง€๊ธˆ๊นŒ์ง€ ์šฐ๋ฆฌ ํ”Œ๋žซํผ์—์„œ ๊ฐ€์žฅ ํฌ๊ด„์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์ œ์•ˆ์ด ์‹คํ–‰๋˜์ง€ ์•Š์œผ๋ฉด ์ ์ ˆํ•œ V2 ๊ธฐ๋Šฅ์ธ NumberBox๋ฅผ ๋Œ€์ฒด ์ˆ˜๋‹จ์œผ๋กœ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ์ด๋ฏธ WinUI 3.0์ด ํ•„์š”ํ•  ๋•Œ NumberBox์— ๋Œ€ํ•ด ๋งŽ์ด ์š”์ฒญ๋œ ๋‘ ๊ฐ€์ง€ ์ž…๋ ฅ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๋ชจ๋“œ๊ฐ€ ์ฐจ๋‹จ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— WinUI 3.0๊ณผ ํ•จ๊ป˜ ๋˜๋Š” ๊ทธ ์งํ›„์— V2๋ฅผ ์ถœ์‹œํ•  ๊ณ„ํš์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ V1์ด ์ถœ์‹œ๋œ ํ›„์— V2 ๋ฌธ์ œ๋ฅผ ์—ด โ€‹โ€‹๊ฒƒ์ด๊ณ , ๊ฑฐ๊ธฐ์—๋„ ์ด๊ฒƒ์„ ๊ธฐ๋กํ•ด ๋‘๋„๋ก ๋…ธ๋ ฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์˜ ๋‹ค๋ฅธ ๋ชจ๋“  ์†์„ฑ ์ค‘์—์„œ ์ž์ฒด ๋ฌธ์„œํ™”ํ•˜๊ธฐ ์œ„ํ•ด "SpinButtonStep" ๋ผ์ธ์„ ๋”ฐ๋ผ ์ด ์ถ”๋ก ์ด ์ดํƒˆํ•  ๋งŒํผ ์ถฉ๋ถ„ํžˆ ์ •๋‹นํ™”๋˜์–ด์•ผ ํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” StepFrequency๊ฐ€ Slider๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๋ณด์•˜์œผ๋ฏ€๋กœ ์šฐ๋ฆฌ๋Š” ๊ทธ ์šฉ์–ด์™€ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์Šคํ•€ ๋ฒ„ํŠผ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋“œ๋ž˜๊ทธ ๋ฐ UIAutomation ๊ณต๊ธ‰์ž ๋ณ€๊ฒฝ ๊ฐ’์—๋„ ์ ์šฉ๋œ๋‹ค๋Š” ์ ์„ ์žŠ์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

@robloo ๋ฐ @mdtauk , ยฐ์— ๋Œ€ํ•ด ํšŒ์‹ ํ•˜๊ธฐ ์ „์— ์Šค๋ ˆ๋“œ๋ฅผ ๋” ์ž์„ธํžˆ ์ฝ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. NumberBox๊ฐ€ Text ์™€ Value ๊ธด๋ฐ€ํ•˜๊ฒŒ ๋™๊ธฐํ™”ํ•˜์—ฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ์žก์„ ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ธฐ ๋•Œ๋ฌธ์— Text ์•ˆ์— ์ด ๊ธฐํ˜ธ๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๊ฒƒ์ด ํ˜„์žฌ ์ง€์›๋˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค Text ๋ณ€ํ™˜ ์˜ค๋ฒ„ํ—ค๋“œ ์—†์ด ํ•„์š”ํ•œ ์œ ํ˜•์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์„œ์‹ ์†์„ฑ์„ ํ†ตํ•ด ์ด๊ฒƒ์„ ๋‹ฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์ง€ ๋ชปํ–ˆ์ง€๋งŒ ๋ฐฉ๋ฒ•์„ ์•Œ๊ณ  ์žˆ๋‹ค๋ฉด ์•Œ๋ ค์ฃผ์„ธ์š”!

์šฐ๋ฆฌ๋Š” ์ง€๊ธˆ V1 ๋ฆด๋ฆฌ์Šค์— ๋งž์„œ๊ณ  ์žˆ์ง€๋งŒ V2์˜ ๊ฒฝ์šฐ ์ ‘๋‘์‚ฌ/์ ‘๋ฏธ์‚ฌ/ํŠน์ˆ˜ ๋ฌธ์ž๋ฅผ ๋‹ค์‹œ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ ์‚ฌ์ด์— #784์— ๋Œ€ํ•œ @mdtauk ์˜ ์ œ์•ˆ์€ ์ง€๊ธˆ๊นŒ์ง€ ํ”Œ๋žซํผ์— ๋Œ€ํ•ด ์ œ์•ˆ๋œ ๊ฐ€์žฅ ํฌ๊ด„์ ์ธ ์†”๋ฃจ์…˜์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด ์ œ์•ˆ์ด ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์ด๋ผ๋ฉด ์—„์ง€์†๊ฐ€๋ฝ์„ ์น˜์ผœ์„ธ์šฐ๊ณ  ๋Œ“๊ธ€์„ ๋‹ฌ์•„์ฃผ์„ธ์š”.

@adrientetar , scroll-to-change๋Š” V1์— ์ ์šฉ๋˜์—ˆ์ง€๋งŒ ๋“œ๋ž˜๊ทธ

์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์‹œ๋‚˜๋ฆฌ์˜ค์— ๋Œ€ํ•ด ๋” ์ž์„ธํžˆ ์„ค๋ช…ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ์‚ฌ์šฉ์ž๊ฐ€ ์ด๊ฒƒ์ด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์–ด๋–ป๊ฒŒ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์†”๋ฃจ์…˜์—์„œ ๋กœ์ปฌ๋กœ ๊ตฌํ˜„๋œ ๊ฒƒ๊ณผ ๋น„๊ตํ•˜์—ฌ ๋ชจ๋“  NumberBox์—์„œ ์ด๊ฒƒ์ด ๊ธฐ๋ณธ(๋˜๋Š” ์ตœ์†Œํ•œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ)์ด์–ด์•ผ ํ•˜๋Š” ์ด์œ ๋ฅผ ์ดํ•ดํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@SavoySchuler

๊ท€ํ•˜์˜ ์˜๊ฒฌ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์˜ ๋‹ค๋ฅธ ๋ชจ๋“  ์†์„ฑ ์ค‘์—์„œ ์ž์ฒด ๋ฌธ์„œํ™”ํ•˜๊ธฐ ์œ„ํ•ด "SpinButtonStep" ๋ผ์ธ์„ ๋”ฐ๋ผ ์ด ์ถ”๋ก ์ด ์ดํƒˆํ•  ๋งŒํผ ์ถฉ๋ถ„ํžˆ ์ •๋‹นํ™”๋˜์–ด์•ผ ํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ทธ ์šฉ์–ด๋ฅผ ๋งŽ์ด ์ข‹์•„ํ•˜์ง€๋งŒ Slider์— ์ด๋ฏธ StepFrequency ์†์„ฑ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋†“์ณค์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ์‚ฌ์‹ค์ด๊ธฐ ๋•Œ๋ฌธ์— @jevansaks๊ฐ€ ์–ธ๊ธ‰ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ

๋ฐ˜์˜ฌ๋ฆผ์€ ์„œ์‹์„ ํ†ตํ•ด ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์€ DecimalFormatter์— ๋Œ€ํ•ด ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ˜์˜ฌ๋ฆผ ์†์„ฑ์˜ ์˜ˆ์ž…๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž๊ฐ€ NumberBox์— "1 / 3"์„ ์ž…๋ ฅํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ๋‹ค์Œ ์ˆœ์„œ๊ฐ€ ๋งž์Šต๋‹ˆ๊นŒ?

  • ์ดˆ์ ์„ ์žƒ๊ฑฐ๋‚˜ ์ž…๋ ฅํ•˜๋ฉด ํ‘œํ˜„์‹์ด ํ‰๊ฐ€๋˜๊ณ  0.33333333...34์˜ ์ด์ค‘ ๊ฐ’์ด ๊ณ„์‚ฐ๋ฉ๋‹ˆ๋‹ค.
  • 0.33333333...34๊ฐ€ DecimalFormatter์— ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค.
  • 0.33333333...34๋Š” ์„ค์ •์— ๋”ฐ๋ผ "0.30"์œผ๋กœ ๋ฐ˜์˜ฌ๋ฆผ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํ•ด๋‹น "0.30" ๊ฐ’์€ ์‚ฌ์šฉ์ž์—๊ฒŒ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•ด TextBox์— ์ž…๋ ฅ๋ฉ๋‹ˆ๋‹ค.
  • ์ด์ค‘ Value ๋Š” ์ด์ œ {0.33333333...34}์ด๊ณ  Text ๊ฐ’์€ ์ด์ œ "0.30"์ž…๋‹ˆ๋‹ค.
  • ์ด์ค‘ Value ๋ฅผ ์ฝ์œผ๋ฉด Text ํ‘œ์‹œ๋œ ๋ฐ˜์˜ฌ๋ฆผ๋œ ์ˆซ์ž๊ฐ€ ๋ฐ˜ํ™˜๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
    (๋˜๋Š” 10์ง„์ˆ˜ ํ˜•์‹์˜ ๊ฐ’์ด ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜๋œ ํ›„ ์–ด๋–ป๊ฒŒ ๋“  ๋‹ค์‹œ ๊ตฌ๋ฌธ ๋ถ„์„๋œ ๋‹ค์Œ ์ „์ฒด๊ฐ€ ๋‹ค์‹œ ํ‰๊ฐ€๋ฉ๋‹ˆ๊นŒ?)

๋˜ํ•œ Value ๋ฐ Text ์†์„ฑ์ด ๋‚ด๋ถ€์ ์œผ๋กœ ๋„ˆ๋ฌด ๋ฐ€์ ‘ํ•˜๊ฒŒ ๊ฒฐํ•ฉ๋˜์–ด ์žˆ๋‹ค๋Š” ์ ์— ๋Œ€ํ•ด์„œ๋„ ์šฐ๋ คํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์„œ๋Š” ์ด ๊ฒฐํ•ฉ์„ ์ •์˜ํ•˜์ง€ ์•Š์œผ๋ฉฐ ๊ณ ๋„๋กœ ๊ตฌ์กฐํ™”๋œ ์–‘๋ฐฉํ–ฅ ์ข…์†์„ฑ์ด ์•„๋‹ˆ๋ผ๋ฉด ๊ฒฐ์ฝ” ์žฌ๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ๋‚ด๋ถ€์ ์œผ๋กœ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„๋˜๋Š”์ง€๋Š” ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ ์ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉ๋ฒ•์€ double Value๋ฅผ ์œ ์ผํ•œ ๋ถ€๋™์‚ฐ์œผ๋กœ ์ทจ๊ธ‰ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ…์ŠคํŠธ๋Š” ๊ฐ’์˜ ํ˜•์‹ํ™”๋œ ๋ฒ„์ „์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๊ฐœ๋ฐœ์ž๋Š” ์›ํ•˜๋Š” ๋Œ€๋กœ ๊ฐ’์„ TextBox ๋ฐ Text ์†์„ฑ์— ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์ด์ „์— ์š”์ฒญํ•œ ๋„ ๊ธฐํ˜ธ ๋˜๋Š” ํ”ผํŠธ/์ธ์น˜ ๊ธฐํ˜ธ๋ฅผ ์–ป์Œ). ๋ชจ๋“  ๊ฒƒ์ด ์ด๋ฏธ Value ์†์„ฑ์— ์˜ํ•ด ๋‚ด๋ถ€์ ์œผ๋กœ ๊ตฌ๋™๋œ๋‹ค๋ฉด ์ „ํ˜€ ์–ด๋ ต์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž์˜ ํ…์ŠคํŠธ ์ž…๋ ฅ์€ ์–ด์จŒ๋“  ์œ ์ง€๋˜์ง€ ์•Š์œผ๋ฉฐ ํ‘œ์‹œ๋ฅผ ์œ„ํ•ด ๋‹ค์‹œ ํ˜•์‹์ด ์ง€์ •๋˜๋Š” ๊ฐ’์„ ๋‹ค์‹œ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐ๋งŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์ˆœ์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ์‚ฌ์šฉ์ž ํ…์ŠคํŠธ ์ž…๋ ฅ -> ํŒŒ์„œ -> ์ด์ค‘ ๊ฐ’ -> ์„œ์‹ -> ํ…์ŠคํŠธ

์ฝ”๋“œ์—์„œ Text ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์€ ์‚ฌ์šฉ์ž๊ฐ€ ์ผ๋ถ€ ํ…์ŠคํŠธ๋ฅผ ์ž…๋ ฅํ•œ ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ฐ’์„ ์ง์ ‘ ๋ณ€๊ฒฝํ•˜๋ฉด ์„œ์‹ ๋ฐ ํ…์ŠคํŠธ ๋‹จ๊ณ„๋ฅผ ๊ฑฐ์น˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๊ฐ’๊ณผ ํ…์ŠคํŠธ ์‹œํ€€์Šค ์‚ฌ์ด์˜ ์ •ํ™•ํ•œ ๋ฐ˜์˜ฌ๋ฆผ์„ ์œ ์ง€ํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์‚ฌ์šฉ์ž ํ…์ŠคํŠธ ์ž…๋ ฅ -> ํŒŒ์„œ -> ๊ฐ’ -> ๋ฐ˜์˜ฌ๋ฆผ -> ๊ฐ’ -> ์„œ์‹ -> ํ…์ŠคํŠธ

ํŽธ์ง‘: ํ‘œํ˜„์‹/์ž…๋ ฅ ํŒŒ์„œ ๋ฐ ํ‰๊ฐ€ ์—”์ง„์—์„œ ๋ฐ˜์˜ฌ๋ฆผ์„ ๊ตฌํ˜„ํ•˜๋ ค๋ฉด(๋ฌด์—‡์ด๋“  ํ˜ธ์ถœ๋จ) RoundingAlgorithm ๊ณผ ๊ฐ™์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ •์˜ํ•˜๊ธฐ ์œ„ํ•ด ์ƒˆ ์†์„ฑ์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•ด๋‹น ์—ด๊ฑฐํ˜•์€ ์ง€์ ํ•œ ๋Œ€๋กœ Windows.Globalization.NumberFormatting์— ์ด๋ฏธ ์ •์˜๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. INumberFormatter2๋Š” ํ˜•์‹ํ™”์— ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋ฉฐ ๋‹ค๋ฅธ ๊ฒƒ์€ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์‹œ ๊ณ„์‚ฐ๊ณผ ์ตœ์ข…์ ์œผ๋กœ ํ‘œ์‹œ๋˜๋Š” ํ…์ŠคํŠธ ๊ฐ„์— ๋‹จ๊ณ„๋ฅผ ๋ถ„๋ฆฌ๋œ ์ƒํƒœ๋กœ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.

@adrientetar , scroll-to-change๋Š” V1์— ์ ์šฉ๋˜์—ˆ์ง€๋งŒ ๋“œ๋ž˜๊ทธ

์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์‹œ๋‚˜๋ฆฌ์˜ค์— ๋Œ€ํ•ด ๋” ์ž์„ธํžˆ ์„ค๋ช…ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ์‚ฌ์šฉ์ž๊ฐ€ ์ด๊ฒƒ์ด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์–ด๋–ป๊ฒŒ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์†”๋ฃจ์…˜์—์„œ ๋กœ์ปฌ๋กœ ๊ตฌํ˜„๋œ ๊ฒƒ๊ณผ ๋น„๊ตํ•˜์—ฌ ๋ชจ๋“  NumberBox์—์„œ ์ด๊ฒƒ์ด ๊ธฐ๋ณธ(๋˜๋Š” ์ตœ์†Œํ•œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ)์ด์–ด์•ผ ํ•˜๋Š” ์ด์œ ๋ฅผ ์ดํ•ดํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

ํ•˜๋‚˜๋Š” ๋” ํฌ๊ฒŒ ์ฆ๊ฐ€ํ•ด์•ผ ํ•˜๊ณ  ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ๋” ์ž‘์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค - Adobe ์•ฑ์—์„œ ์„ ํƒํ•œ ์˜์—ญ/๊ฐœ์ฒด๋ฅผ ์กฐ๊ธˆ์”ฉ ์ด๋™ํ•˜๋Š” ๊ฒƒ๊ณผ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์‹œ๋‚˜๋ฆฌ์˜ค์— ๋Œ€ํ•ด ๋” ์ž์„ธํžˆ ์„ค๋ช…ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

์‹œ๊ฐ์  ์˜๋ฏธ(์˜ˆ: ๊ฐœ์ฒด ํšŒ์ „)๋กœ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๊ณ  ์‹ถ์ง€๋งŒ ์–ด๋””๊นŒ์ง€ ๊ฐ€๊ณ  ์‹ถ์€์ง€ ์ž˜ ๋ชจ๋ฅผ ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์‹œ๊ฐ ๋””์ž์ธ์— ์ข‹์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž๊ฐ€ ์ด๊ฒƒ์ด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์–ด๋–ป๊ฒŒ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

Adobe XD, Framer ๋“ฑ ์ตœ์‹  ๋„๊ตฌ์— ์žˆ๋Š” ๊ธฐ๋Šฅ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค.

์†”๋ฃจ์…˜์—์„œ ๋กœ์ปฌ๋กœ ๊ตฌํ˜„๋œ ๊ฒƒ๊ณผ ๋น„๊ตํ•˜์—ฌ ๋ชจ๋“  NumberBox์—์„œ ์ด๊ฒƒ์ด ๊ธฐ๋ณธ(๋˜๋Š” ์ตœ์†Œํ•œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ)์ด์–ด์•ผ ํ•˜๋Š” ์ด์œ ๋ฅผ ์ดํ•ดํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

ํ„ฐ์น˜ ์žฅ์น˜์— ์žˆ์„ ๋•Œ ์ด๊ฒƒ์„ ๊ฐ–๋Š” ๊ฒƒ์ด ์ข‹๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํƒญ-๋“œ๋ž˜๊ทธ๋Š” ์ฃผ์–ด์ง„ ๊ฐ’์„ ์กฐ์ •ํ•˜๋Š” ํŽธ๋ฆฌํ•œ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค(ํƒญ-๋“œ๋ž˜๊ทธ๋กœ ๊ฐ’์„ ์Šคํฌ๋กคํ•˜๋Š” ์ „ํ™” ์‹œ๊ฐ„ ์„ ํƒ๊ธฐ ์œ„์ ฏ๊ณผ ์œ ์‚ฌ).

ํ•˜๋‚˜๋Š” ๋” ํฌ๊ฒŒ ์ฆ๊ฐ€ํ•ด์•ผ ํ•˜๊ณ  ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ๋” ์ž‘์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค - Adobe ์•ฑ์—์„œ ์„ ํƒํ•œ ์˜์—ญ/๊ฐœ์ฒด๋ฅผ ์กฐ๊ธˆ์”ฉ ์ด๋™ํ•˜๋Š” ๊ฒƒ๊ณผ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

RangeBase์—๋Š” SmallChange ๋ฐ LargeChange ์†์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ BeLight Software์˜ NumericUpDown ๋ฒ„์ „์€ RangeBase์—์„œ ํŒŒ์ƒ๋˜๊ณ  ArrowUp ๋ฐ ArrowDown ๋‹จ์ถ•ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” SmallChange์™€ PageUp ๋ฐ PageDown ๋‹จ์ถ•ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” LargeChange์— ์˜ํ•ด ๊ฐ’์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ์—ฌ๊ธฐ์— ํ˜ผ์ž๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.
https://help.syncfusion.com/uwp/numeric-updown/gestures
https://docs.telerik.com/devtools/wpf/controls/radnumericupdown/features/navigation

์ปค๋ฎค๋‹ˆํ‹ฐ ์ฝœ ์ค‘ ๋– ์˜ค๋ฅธ ํ‚ค๋ณด๋“œ ์ˆซ์ž ํ‚คํŒจ๋“œ์— ๋Œ€ํ•œ ํ•œ๋งˆ๋””...

๋Œ€๋ถ€๋ถ„์˜ ์•ฑ์—์„œ "." ํ‚คํŒจ๋“œ ๋ฒ„ํŠผ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹"." ์˜์–ด๊ฐ€ ์•„๋‹Œ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์†Œ์ˆ˜์  ๊ตฌ๋ถ„ ๊ธฐํ˜ธ์™€ ๋‹ค๋ฅธ ๋ฌธ์ž์ž…๋‹ˆ๋‹ค(์˜ˆ: ํ”„๋ž‘์Šค์–ด์˜ ","). ๋”ฐ๋ผ์„œ "."๋ฅผ ๋ˆ„๋ฅผ ๋•Œ ๋ฉ”๋ชจ์žฅ์—์„œ ํ‚ค๋ฅผ ๋ˆ„๋ฅด๋ฉด "." ์บ๋ฆญํ„ฐ.

์ผ๋ถ€ ์•ฑ(Excel์ด ์ด์— ๋Œ€ํ•ด ๊ฐ€์žฅ ์ž˜ ์•Œ๋ ค์ ธ ์žˆ์Œ)์€ ํ‚คํŒจ๋“œ "."์˜ ํ‚ค ๋ˆ„๋ฆ„์„ ์žฌํ•ด์„ํ•˜๊ธฐ ์œ„ํ•ด ์ด ํ‚ค ๋™์ž‘์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. ์†Œ์ˆ˜์  ๊ตฌ๋ถ„ ๊ธฐํ˜ธ ์ž…๋ ฅ์œผ๋กœ. ํ‚คํŒจ๋“œ์˜ "๊ณ„์‚ฐ๊ธฐ" ๋””์ž์ธ๊ณผ ๋” ์ž˜ ํ˜ธํ™˜๋ฉ๋‹ˆ๋‹ค.

๊ณ„์‚ฐ๊ธฐ ์•ฑ์€ "." ์†Œ์ˆ˜ ๊ตฌ๋ถ„ ๊ธฐํ˜ธ๋กœ ํ•ด์„ํ•˜๋ ค๋ฉด ๋ฅผ ๋ˆ„๋ฅด์‹ญ์‹œ์˜ค.

numberbox๋Š” "๊ณ„์‚ฐ๊ธฐ"๋กœ ๋” ๋งŽ์ด ์ž‘๋™ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ปจํŠธ๋กค์—์„œ "." ํ‚คํŒจ๋“œ์˜ ํ‚ค๋ฅผ ์†Œ์ˆ˜์  ๊ตฌ๋ถ„ ๊ธฐํ˜ธ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ์ตœ์†Œํ•œ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ฃผ์š” ํ•„ํ„ฐ ๋ฐ ์ด๋ฒคํŠธ์™€ ์‹ธ์šธ ํ•„์š” ์—†์ด ์ด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

์†์„ฑ์ด ๊ธฐ๋Šฅ์„ ํ™œ์„ฑํ™”(์˜ตํŠธ์ธ์ธ ๊ฒฝ์šฐ) ๋˜๋Š” ๋น„ํ™œ์„ฑํ™”(์˜ตํŠธ์•„์›ƒ์ธ ๊ฒฝ์šฐ)ํ•˜๋„๋ก ํ—ˆ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด KeyPadDotAsDecimalSeparator="false" ?

V2 NumberBox ์ œ์•ˆ: https://github.com/microsoft/microsoft-ui-xaml/issues/1736

์•ˆ๋…•ํ•˜์„ธ์š” ๋ฉ‹์ง„ WinUI ์ปค๋ฎค๋‹ˆํ‹ฐ์ž…๋‹ˆ๋‹ค! ๋ฆด๋ฆฌ์Šค๋ฅผ ๋ณด๊ธฐ ์œ„ํ•ด ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ์ œ์•ˆํ•œ ์ฒซ ๋ฒˆ์งธ ์ œ์–ด ๊ธฐ๋Šฅ์„ ์ง‘์œผ๋กœ ๊ฐ€์ ธ๊ฐˆ ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ์…”์„œ ์ง„์‹ฌ์œผ๋กœ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด๊ฒƒ์ด ์—„์ฒญ๋‚œ ์ž‘์—…์ด์—ˆ๊ณ  ์—ฌ๋Ÿฌ๋ถ„ ๋ชจ๋‘๊ฐ€ ํ•จ๊ป˜ ๋””์ž์ธํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๊ณ ์˜ V1 ๊ธฐ๋Šฅ ๋ชจ์Œ์„ ๋งŒ๋“œ๋Š” ๋ฐ ์ƒ๋‹นํ•œ ์‹œ๊ฐ„์„ ํˆฌ์žํ–ˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๋˜ํ•œ ๋ชจ๋“  ๊ฒƒ์ด V1 ๋ฆด๋ฆฌ์Šค์— ํฌํ•จ๋˜์ง€ ์•Š์•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋งค์šฐ ์›ํ•˜๋Š” ์ผ๋ถ€ ์ž…๋ ฅ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๊ตฌ์„ฑ์€ WinUI 3.0 ๊ธฐ๋Šฅ ์ž‘์—…์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง€๋ฉฐ, ์ผ๋ถ€ ์›ํ•˜๋Š” ๊ธฐ๋Šฅ์€ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ/์ ์šฉ ํ›„๋ฐ˜๋ถ€์— ํ‘œ๋ฉดํ™”๋˜์–ด์•ผ ํ•˜๋ฉฐ, ์šฐ๋ฆฌ๊ฐ€ ์•Œ๊ณ  ์žˆ๋Š” ์ผ๋ถ€ ๊ธฐ๋Šฅ์€ V1 ๋ฆด๋ฆฌ์Šค ์ดํ›„์— ๋” ์ž˜ ํƒ์ƒ‰๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

WinUI 3 ๋ฆด๋ฆฌ์Šค์—์„œ ์˜๋„ํ•œ NumberBox ๊ธฐ๋Šฅ ์ž‘์—…์„ ์™„๋ฃŒํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. V1์—์„œ ๋ˆ„๋ฝ๋œ ํ•„์ˆ˜ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ํ”ผ๋“œ๋ฐฑ์„ ์ˆ˜์ง‘ํ•˜๊ธฐ ์œ„ํ•œ ๋ฌธ์ œ๋ฅผ ์—ด์—ˆ์Šต๋‹ˆ๋‹ค. NumberBox์— ํ•„์š”ํ•œ ๊ฒƒ์ด ์—†์œผ๋ฉด ์—ฌ๊ธฐ์— ์˜๊ฒฌ์„ ๋‚จ๊ฒจ์ฃผ์„ธ์š”: https://github.com/microsoft/microsoft-ui-xaml/issues/1736

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