์ด๊ฒ์ ์๋ก์ด ๊ธฐ๋ฅ ๋๋ API ์ ์์ ์ํ ํ ํ๋ฆฟ์ ๋๋ค. ์๋ฅผ ๋ค์ด ์ด๋ฅผ ์ฌ์ฉํ์ฌ ๊ธฐ์กด ์ ํ์ ๋ํ ์ API๋ฅผ ์ ์ํ๊ฑฐ๋ ์ UI ์ปจํธ๋กค์ ๋ํ ์์ด๋์ด๋ฅผ ์ ์ํ ์ ์์ต๋๋ค. UWP ๋๋ ์ฑ ๋ชจ๋ธ๊ณผ ๊ด๋ จ๋ ๊ธฐ๋ฅ ์ ์์ ๊ฒฝ์ฐ Project Reunion ๋ฆฌํฌ์งํ ๋ฆฌ์์ ๋ฌธ์ ๋ฅผ ์ฌ์ญ์์ค. https://github.com/microsoft/ProjectReunion ๋ชจ๋ ์ธ๋ถ ์ ๋ณด๊ฐ ์์ด๋ ๊ด์ฐฎ์ต๋๋ค. ์์ฝ๋ถํฐ ์์ํ ์ ์์ต๋๋ค. ๋ฐ ๊ทผ๊ฑฐ. ์ด ๋งํฌ๋ WinUI ๊ธฐ๋ฅ/API ์ ์ ํ๋ก์ธ์ค๋ฅผ ์ค๋ช ํฉ๋๋ค. https://github.com/Microsoft/microsoft-ui-xaml/blob/master/docs/feature_proposal_process.md
์ด ๋ฌธ์ ์ ๋ํ PR ๊ณผ ํจ๊ป ์ฌ์ ์ด ์ด๋ ธ์ต๋๋ค. ์ด ์ ์์ ๋ํ ์ผ๋ฐ์ ์ธ ํ ๋ก ์ ์์ ๋กญ๊ฒ ๊ณ์ํ์ญ์์ค!
Windows ์ ์ฒด์์ Windows ๋ณด์, ์ค์ , ์ฌ์ง, ๊ทธ๋ฆผํ 3D, ์๋ฆผ ์ผํฐ, 3D ๋ทฐ์ด, ์๋ฆผ ๋ฐ UWP Onedrive ์ฑ์์ ๋ค์ํ ํ์ฅ๊ธฐ ์ปจํธ๋กค์ด ์ฌ์ฉ๋ฉ๋๋ค. ํ์ฌ ์ด ์ผ๋ฐ์ ์ธ UX ํจํด์ ์ฒ๋ฆฌํ๋ ์ผ๊ด๋ "Windows" ๋ฐฉ์์ ์์ต๋๋ค. Expander ์ปจํธ๋กค์ ๋ง์ ์ฑ ์๋๋ฆฌ์ค์์ ์ฌ์ฉํ๊ณ WPF์ ํจ๋ฆฌํฐ๋ฅผ ๋ฌ์ฑํ๊ธฐ ๋๋ฌธ์ ๋๊ธฐ๊ฐ ๋ถ์ฌ๋ฉ๋๋ค.
| ๊ธฐ๋ฅ | ์ฐ์ ์์ |
| :------------ | :--------- |
| WinUI ์ฑ์์ ์ผ๊ด๋ ํ์ฅ๊ธฐ ๋์ ์ ๊ณต | ํ์ |
| ์ปจํธ๋กค๊ณผ์ ์ฌ์ฉ์ ์ํธ ์์ฉ์ ๋ฐ๋ผ ํฌ๊ธฐ ํ์ฅ(๋ค๋ฅธ ์ฝํ
์ธ ํธ์) ๋ฐ ์ถ์ | ํ์ |
| ๋นํ์ฅ ๋ฐ ํ์ฅ ์ฝํ
์ธ ์์ Button, ToggleSwitch์ ๊ฐ์ ์ปจํธ๋กค ์ง์ | ํ์ |
| 4๋ฐฉํฅ ํ์ฅ ์ง์ | ํด์ผ* |
| ํ์ฅ๋ ์ํ์ ๋ชจ๋ ์ฝํ
์ธ (ํค๋ ํฌํจ) ์์ ์ง์ | ์ |
| InfoBar ํ์ฅ ์ง์(๊ตฌํ์ ๋ํ ๊ณต๊ฐ ์ง๋ฌธ) | ์ |
| Expanders ์ฌ์ด์ "์์ฝ๋์ธ ๋์" ๋
ผ๋ฆฌ ํฌํจ | ํ์ง ์์ |
| ๊ฐ๋ณ๊ฒ ๋ซ์ ์ ์์ต๋๋ค | ํ์ง ์์ |
*v1 Expander๋ ์๋์ชฝ ๋ฐฉํฅ์ผ๋ก๋ง ํ์ฅ๋๋๋ก ๋ฒ์๋ฅผ ์ง์ ํ ์ ์์ผ๋ฉฐ ๊ธฐ๋ณธ์ ์ผ๋ก down ๋ฐ ExpandDirection์ด ๋์ค์ ์ถ๊ฐ๋ฉ๋๋ค.
Public enum ExpandDirection
{
Down = 0
Up = 1
Left = 2
Right = 3
}
public class Expander : ContentControl
{
Expander();
public object Header {get;set;}
public DataTemplate HeaderTemplate { get;set; }
public DataTemplate HeaderTemplateSelector {get;set;}
public static readonly DependencyProperty HeaderProperty;
public static readonly DependencyProperty HeaderTemplateProperty;
public static readonly DependencyProperty HeaderTemplateSelectorProperty {get;}
public bool IsExpanded { get;set}
public ExpandDirection ExpandDirection { get;set;}
protected virtual void OnExpanded();
protected virtual void OnCollapsed();
public event Expanded;
public event Collapsed;
public static readonly DependencyProperty IsExpandedProperty;
public static readonly DependencyProperty ExpandDirectionProperty;
}
Visual States:
ExpandStates: Expanded/Collapsed
Accessibility:
Support Expand/Collapse pattern (IExpandCollapseProvider)
Expander๋ ๋งค์ฐ ์ ์ฉํ๋ฉฐ Windows Community Toolkit ๋ฒ์ ์ด ์ถ๊ฐ๋ ์ดํ๋ก ๊ณ์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ๋๋ ๋ฐํด๋ฅผ ๋๋ฌด ๋ง์ด ์ฌ๋ฐ๋ช ํ์ง๋ ์์ ๊ฒ์ ๋๋ค. ์ ์๊ฐ์๋ ํดํท์์ ์ฝ๋๋ฅผ ํฌํ ํ๋ ๊ฒ์ด ๋ฒ์ 1.0์ ์๋ฒฝํ ๊ฒ์ ๋๋ค.
๋ ๋ค๋ฅธ ์: 'MoreButton'์ด ์๋ ColorPicker๊ฐ ์ด๊ฒ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ด ์ ์์ ์ ์ถํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค! ๋ด๊ฐ ์๊ฐํ๋ ์ง์ ํ Expander ์๋๋ฆฌ์ค์ Flyout/MenuFlyout ์ฌ์ฉ๊ณผ ์ ์ฌํ ๊ฒ์ ๊ตฌ๋ถํ๋ ๊ฒ์ ํฌํจํ์ฌ ๋ช ๊ฐ์ง ํธ์ง์ ํ ๊ฒ์ ๋๋ค.
๋ฒ์, ์ ์๋ API ๋ฐ ๋ค์ ๊ณต๊ฐ ์ง๋ฌธ์ ๋ํ ์์ธํ ๋ด์ฉ์ ํฌํจํ๋๋ก ์ด ์ ์์ ์ ๋ฐ์ดํธํ์ต๋๋ค.
์ด๊ฒ์ด Expander์ ์ฌ์ฉ ์ฌ๋ก์ ์ด๋ป๊ฒ ์ ํฉํ๊ฑฐ๋ ์ ํฉํ์ง ์์์ง์ ๋ํ ํผ๋๋ฐฑ์ ์ํฉ๋๋ค!
๋ฒ์, ์ ์๋ API ๋ฐ ๋ค์ ๊ณต๊ฐ ์ง๋ฌธ์ ๋ํ ์์ธํ ๋ด์ฉ์ ํฌํจํ๋๋ก ์ด ์ ์์ ์ ๋ฐ์ดํธํ์ต๋๋ค.
- v1 Expander์์ ExpandDirection์ ์ง์ํด์ผ ํฉ๋๊น? Expander๊ฐ ์๋์ชฝ์ด ์๋ ๋ค๋ฅธ ๋ฐฉํฅ์ผ๋ก ํ์ฅํด์ผ ํ๋ ์ผ๋ฐ์ ์ธ ์ฑ ์๋๋ฆฌ์ค๊ฐ ์์ต๋๊น?
์ด๊ฒ์ด Expander์ ์ฌ์ฉ ์ฌ๋ก์ ์ด๋ป๊ฒ ์ ํฉํ๊ฑฐ๋ ์ ํฉํ์ง ์์์ง์ ๋ํ ํผ๋๋ฐฑ์ ์ํฉ๋๋ค!
์ปจํธ๋กค์ ๊ธฐ๋ณธ ๊ธฐ๋ฅ์ธ ๊ฒ ๊ฐ์ต๋๋ค.
์ปจํธ๋กค์ ๊ธฐ๋ณธ ๊ธฐ๋ฅ์ธ ๊ฒ ๊ฐ์ต๋๋ค.
@mdtauk ์๋์ชฝ์ด ์ผ๋ฐ์ ์ธ ์ฑ ์๋๋ฆฌ์ค๊ฐ ์๋ ExpandDirection์ด ๋ณด์ ๋๊น? ๋ด๊ฐ ๋ณด๋ Expander ๋์์ ์๋ ํจ์ฌ ๋ ์์ฃผ ์๋์ชฝ์ผ๋ก ํ์ฅ๋ฉ๋๋ค. Expander์ ExpandDirection์ด ์์ผ๋ฉด ์ข๊ฒ ์ง๋ง v1์์ ๊ผญ ํ์ํ๊ฐ์?
์, ํ์ฅ ๋ฐฉํฅ์ด ํ์ํฉ๋๋ค. ์ด๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ผ๋ฉฐ v1 ๋ฆด๋ฆฌ์ค ์ดํ์ ์ปจํธ๋กค ํ ํ๋ฆฟ์ ์ถ๊ฐํ๊ธฐ ์ํด ๋ถํ์ํ ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ์ด ๋ ๊ฒ์ ๋๋ค. Expander API๋ WPF ์ดํ๋ก ๋ง์ด ๋ณ๊ฒฝ๋์ง ์์์ผ๋ฉฐ ์ฌ๊ธฐ์ ์๋ ์ ์์๋ ํ์ํ ๋ชจ๋ ์์ฑ/์ด๋ฒคํธ/๋ฉ์๋๊ฐ ์ด๋ฏธ ์์ต๋๋ค. ์ด ๋ชจ๋ ๊ฒ์ ํ ๋ฒ์ ๊ตฌํํ ์ ์์ผ๋ฉฐ ์ด ์ปจํธ๋กค๋ก ์๋ฃํ ์ ์์ต๋๋ค. ๋์์ธ ๋ฉด์์ UWP Community Toolkit์ ํฐ์น ์์ ์ ๋ ์ ์ํํ๊ธฐ ์ํด ํ์ํ ๋ณ๊ฒฝ ์์ ์ ์ํํ์ต๋๋ค. ๋๋ ์ฐ๋ฆฌ๊ฐ ๋ชจ๋ ์กฐ๊ฐ์ ๊ฐ์ง๊ณ ์๊ณ ์๋ฌด๊ฒ๋ ๋ค์ ๋ฐ๋ช ํ ํ์๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
ํธ์ง: ์ปค๋ฎค๋ํฐ ํดํท์๋ ContentOverlay
์์ฑ์ด ์์ต๋๋ค. V1์์๋ ๊ฑด๋๋ธ ์ ์์ต๋๋ค.
์, ํ์ฅ ๋ฐฉํฅ์ด ํ์ํฉ๋๋ค. ์ด๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ผ๋ฉฐ v1 ๋ฆด๋ฆฌ์ค ์ดํ์ ์ปจํธ๋กค ํ ํ๋ฆฟ์ ์ถ๊ฐํ๊ธฐ ์ํด ๋ถํ์ํ ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ์ด ๋ ๊ฒ์ ๋๋ค.
@roblo ์ด๊ฒ์ด ์ด๋ป๊ฒ ํ๊ธฐ์ ์ธ ๋ณํ์ธ์ง ์์ธํ
์ปจํธ๋กค์ ๊ธฐ๋ณธ ๊ธฐ๋ฅ์ธ ๊ฒ ๊ฐ์ต๋๋ค.
@mdtauk ์๋์ชฝ์ด ์ผ๋ฐ์ ์ธ ์ฑ ์๋๋ฆฌ์ค๊ฐ ์๋ ExpandDirection์ด ๋ณด์ ๋๊น? ๋ด๊ฐ ๋ณด๋ Expander ๋์์ ์๋ ํจ์ฌ ๋ ์์ฃผ ์๋์ชฝ์ผ๋ก ํ์ฅ๋ฉ๋๋ค. Expander์ ExpandDirection์ด ์์ผ๋ฉด ์ข๊ฒ ์ง๋ง v1์์ ๊ผญ ํ์ํ๊ฐ์?
์๋ก์ด ๋ชฉ๋ก ์ฝํ ์ธ ๋ฅผ ์๋์์ ์๋ก ๋ก๋ํ๋ ์ฑํ ์ฑ์ด ๊ทธ ์ค ํ๋์ผ ์ ์์ต๋๋ค.
๋งค์ฐ ๊ธฐ๋ณธ์ ์ธ ํ์ ์ฌํญ ์ธ์:
๋ฟ๋ง ์๋๋ผ IsEnabled
๋ค์ ํต์ฌ์ ํ์ฅํ ์์น์ ๋๋ค.
์๋ก์ด ๋ชฉ๋ก ์ฝํ ์ธ ๋ฅผ ์๋์์ ์๋ก ๋ก๋ํ๋ ์ฑํ ์ฑ์ด ๊ทธ ์ค ํ๋์ผ ์ ์์ต๋๋ค.
@mdtauk ์ด ์ฑํ
์ฑ์ ์๊ฐ ๋ฌด์์ ์๋ฏธํ๋์ง ์์ ํ ์ดํดํ์ง ๋ชปํฉ๋๋ค. ์์ธํ
์์ฑ์ ๊ดํด์๋ - ์ ์๋ API๋ WPF Expander๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ฏ๋ก IsExpanded ๋ฐ ExpandDirection์ด ์ด๋ฅผ ๋ค๋ฃฐ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. IsEnabled๋ ๋ฌด์์ ์ฌ์ฉ๋ฉ๋๊น? Expander๋ฅผ ๋นํ์ฑํํ๋ ค๋ ์ฑ ์๋๋ฆฌ์ค๊ฐ ์์ต๋๊น?
๊ณผ๊ฑฐ์ ์ฌ์ฉํ ๋ ๋ค๋ฅธ ์๋ ์ผ๋ฐ์ ์ผ๋ก ์จ๊ฒจ์ ธ์ผ ํ๋ ํธ์ง ๊ฐ๋ฅํ ๋ณด์กฐ ์์ฑ์ ๋๋ค. ์ด๋ '์ต์ ' ๋ฒํผ์ ํด๋ฆญํ๊ณ ํ์ฅ๊ธฐ๊ฐ ์์ชฝ์ผ๋ก ์ด๋ฆฌ๋ ๊ฒฝ์ฐ์๋ง ํธ์ง๊ธฐ ํ๋จ์ ํ์๋ฉ๋๋ค. ๊ทธ๊ฒ์ ๋น์ ์ด ์ํ๋ ๋์์ธ์ ๋ฌ๋ ค ์์ต๋๋ค. ์๋ก ๋ค๋ฅธ ๋ฐฉํฅ์ ํ์ฅํ๋ ๋ฐ ์ ์ฉํ ๊ฒฝ์ฐ๊ฐ ๋ง์ด ์์ผ๋ฉฐ ํนํ ๊ณผ๊ฑฐ์ ๊ด์ต์ด ๋๋ฌด ๊ฐํ ๋ ์ด๊ฒ์ ์ธ์์ ์ผ๋ก ์ ํํ๋ ๊ฒ์ ๋ถํ์ํด ๋ณด์ ๋๋ค. ํนํ ๋ชจ๋ ๋ฌธ์ ๊ฐ ์ปค๋ฎค๋ํฐ ํดํท๊ณผ WPF์์ ์ด๋ฏธ ํด๊ฒฐ๋์๊ธฐ ๋๋ฌธ์ ์ปจํธ๋กค์ V1์์๋ ์ด ์ค ์ด๋ ๊ฒ๋ ๋๋ฌด ์ด๋ ค์ธ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ง ์์ต๋๋ค.
@roblo ์ด๊ฒ์ด ์ด๋ป๊ฒ ํ๊ธฐ์ ์ธ ๋ณํ์ธ์ง ์์ธํ
ํ ํ๋ฆฟ๊ณผ ์๊ฐ์ ์ํ๋ฅผ ๋์์ธํ๋ ๋ฐ ๋งค์ฐ ์ฃผ์ํ๋ค๋ฉด ๊นจ์ง์ง ์๊ฒ ๋ง๋๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๋ ๊ฒ ํ๋ ค๋ฉด ์ด์จ๋ ๊ธฐ๋ฅ์ ์ค๊ณํด์ผ ํ๋ฏ๋ก ๊ตฌํํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ด๊ฒ์ ๋ชจ๋ ์๋นํ ๊ธฐ๋ณธ์ ์ด๋ฉฐ ์ด ์ปจํธ๋กค์ ์ฒ์๋ถํฐ V2 ๊ณํ์ ์ฌ์ฉํ ์ด์ ๊ฐ ์์ต๋๋ค.
๋๋ ๋ฐํด๋ฅผ ์ฌ๋ฐ๋ช ํ๋ ๊ฒ์ด ๋งค๋ ฅ์ ์ด๋ผ๋ ๊ฒ์ ์๋๋ค. ๊ทธ๋ฌ๋ WPF์์ WinUI๋ก ์ฑ์ ์ด์ํ๋ ์ฌ๋๋ค์ด ์ ๋์ ์ผ๋ก ํ์ํ ์ฝ๋ ๋ณ๊ฒฝ ์์ด ์ํํ ์ ์๋๋ก ์ ์งํ์ญ์์ค. WinUI๋ UWP์ ์ผ๋ถ ์ค์๋ฅผ ์์ ํ๊ธฐ ์์ํด์ผ ํฉ๋๋ค.
IsEnabled๋ ๋ฌด์์ ์ฌ์ฉ๋ฉ๋๊น? Expander๋ฅผ ๋นํ์ฑํํ๋ ค๋ ์ฑ ์๋๋ฆฌ์ค๊ฐ ์์ต๋๊น?
@mdtauk ๋ง์ต๋๋ค. IsEnabled๋ ์ง์ํด์ผ ํฉ๋๋ค. ์ปจํธ๋กค์ ๋นํ์ฑํํ๋ ๊ฒ์ ์ ๋ ฅ ๋๋ ์ํ ๋ณ๊ฒฝ ๊ฐ๋ฅ์ฑ์ด ์์ ๋๋ง๋ค ๋งค์ฐ ๊ฐ๋ ฅํ ๊ท์น์ ๋๋ค. ์ฐ๋ฆฌ๊ฐ ๊ทธ๊ฒ์ ๋ณํธํ๊ฒ ๋ง๋ค์ง ๋ง์ญ์์ค.
์์ ์คํฌ๋ฆฐ์ท์์ Windows ๋ณด์์๋ ๋ฐ์ด๋ฌ์ค ๋ฐฑ์ ์น์ ๊ณผ ์ผ์ชฝ ํ์ ๋ฉ๋ด์ ๋ํ ํ์ฅ๊ธฐ๊ฐ ์์ต๋๋ค. ์ด๊ฒ์ ๋ง์ ์ฑ์ด ์ง์ํด์ผ ํ๋ ์ฌ๋ฌ ๋ฐฉํฅ์์ ํ์ฅ๊ธฐ๋ฅผ ๋งค์ฐ ํ์ค์ ์ผ๋ก ์ฌ์ฉํจ์ ๋ณด์ฌ์ค๋๋ค. ๋ด ํฌํ๋ V1์์ ์ฌ๋ฌ ๋ฐฉํฅ์ ์ง์ํ๋ ๊ฒ์ ๋๋ค.
@roblo
๊ณผ๊ฑฐ์ ์ฌ์ฉํ ๋ ๋ค๋ฅธ ์๋ ์ผ๋ฐ์ ์ผ๋ก ์จ๊ฒจ์ ธ์ผ ํ๋ ํธ์ง ๊ฐ๋ฅํ ๋ณด์กฐ ์์ฑ์ ๋๋ค. ์ด๋ '์ต์ ' ๋ฒํผ์ ํด๋ฆญํ๊ณ ํ์ฅ๊ธฐ๊ฐ ์์ชฝ์ผ๋ก ์ด๋ฆฌ๋ ๊ฒฝ์ฐ์๋ง ํธ์ง๊ธฐ ํ๋จ์ ํ์๋ฉ๋๋ค.
์๋๋ฆฌ์ค๋ฅผ ๋ ์ ์ดํดํ ์ ์๋๋ก ์ด๋ฌํ ์ํฉ์ด ๋ฐ์ํ๋ ์คํฌ๋ฆฐ์ท์ด๋ ํน์ ์ฑ์ผ๋ก ์์ธํ ์ค๋ช ํด ์ฃผ์๊ฒ ์ต๋๊น? ์ต์ ๋ฒํผ์ด ๋ ๋ง์ ๋ฒํผ์ด ์๋ ํ์ ์ ์ฌ๋ ํธ์ง๊ธฐ๋ฅผ ์๊ฐํ ์ ์์ง๋ง ๋ค๋ฅธ ์ฝํ ์ธ ์ ์ต์ํ ํธ์ง๊ธฐ์์๋ ํ์ฅ์ด ์๋ ํ์ /ํ๋ผ์ด์์ ๋์์ธ ๋ค๋ฅธ ์ฝํ ์ธ ๊ฐ ์์ชฝ์ผ๋ก ํธ์๋์ง ์์ต๋๋ค.
ํ ํ๋ฆฟ๊ณผ ์๊ฐ์ ์ํ๋ฅผ ๋์์ธํ๋ ๋ฐ ๋งค์ฐ ์ฃผ์ํ๋ค๋ฉด ๊นจ์ง์ง ์๊ฒ ๋ง๋๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๋ ๊ฒ ํ๋ ค๋ฉด ์ด์จ๋ ๊ธฐ๋ฅ์ ์ค๊ณํด์ผ ํ๋ฏ๋ก ๊ตฌํํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ด๊ฒ์ ๋ชจ๋ ์๋นํ ๊ธฐ๋ณธ์ ์ด๋ฉฐ ์ด ์ปจํธ๋กค์ ์ฒ์๋ถํฐ V2 ๊ณํ์ ์ฌ์ฉํ ์ด์ ๊ฐ ์์ต๋๋ค.
๋๋ ๋ฐํด๋ฅผ ์ฌ๋ฐ๋ช ํ๋ ๊ฒ์ด ๋งค๋ ฅ์ ์ด๋ผ๋ ๊ฒ์ ์๋๋ค. ๊ทธ๋ฌ๋ WPF์์ WinUI๋ก ์ฑ์ ์ด์ํ๋ ์ฌ๋๋ค์ด ์ ๋์ ์ผ๋ก ํ์ํ ์ฝ๋ ๋ณ๊ฒฝ ์์ด ์ํํ ์ ์๋๋ก ์ ์งํ์ญ์์ค.
WPF์์ WinUI๋ก ์ฑ์ ํฌํ ํ๋ ๊ฒ์ด ์ต๋ํ ์ํํด์ผ ํ๋ค๋ ๋ฐ ๋์ํฉ๋๋ค! WinUI ํ๊ณผ์ ๋ ผ์์์ ์๋์ชฝ์ผ๋ก ํ์ฅ๋๋ V1์ ๊ฐ๋ฐ ์๊ฐ์ ๋จ์ถํ๊ณ ๊ฐ๋ฐ์๊ฐ Expander๋ฅผ ๋ ๋นจ๋ฆฌ ์ฌ์ฉํ ์ ์๊ฒ ํ๋ฉฐ(์ง๊ธ๊น์ง Expander์ ๋ํ ์๋๋ฆฌ์ค๋ ๋ชจ๋ ํํฅ ์กฐ์ ๋์๊ธฐ ๋๋ฌธ์) ๊ณํ๋ V2์์ ExpandDirection์ ์ถ๊ฐํ ์ ์๋ค๊ณ ์ธ๊ธ๋์์ต๋๋ค. ๊ณง๋ฐ๋ก. (์ด ์ถ๊ฐ ์ปจํ ์คํธ๋ฅผ ํฌํจํ๋๋ก ๊ณต๊ฐ ์ง๋ฌธ์ ํธ์งํ ๊ฒ์ ๋๋ค.) ์ด๊ฒ์ด ๊ฐ๋ฐ์๊ฐ ๋ค์ด๋ค์ด์ด ์๋ Expander์ ๋ํ ํน์ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์๋์ง ์ดํดํ๊ธฐ๋ฅผ ๋ฐ๋ผ๋ ์ด์ ์ ๋๋ค! ๐
์ปจํธ๋กค์ ๋นํ์ฑํํ๋ ๊ฒ์ ์ ๋ ฅ ๋๋ ์ํ ๋ณ๊ฒฝ ๊ฐ๋ฅ์ฑ์ด ์์ ๋๋ง๋ค ๋งค์ฐ ๊ฐ๋ ฅํ ๊ท์น์ ๋๋ค. ์ฐ๋ฆฌ๊ฐ ๊ทธ๊ฒ์ ๋ณํธํ๊ฒ ๋ง๋ค์ง ๋ง์ญ์์ค.
์ค๋ช ํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ํ ๋ณ๊ฒฝ์ ๋นํ์ฑํํ๋ ๊ฒ์ด ์ด๋ฐ ์ข ๋ฅ์ ์ ์ด์ ํ์ํ ๊ธฐ๋ฅ์ด๋ผ๋ ๊ฒ์ ์์ ํ ์ดํด๊ฐ ๋ฉ๋๋ค!
์์ ์คํฌ๋ฆฐ์ท์์ Windows ๋ณด์์๋ ๋ฐ์ด๋ฌ์ค ๋ฐฑ์ ์น์ ๊ณผ ์ผ์ชฝ ํ์ ๋ฉ๋ด์ ๋ํ ํ์ฅ๊ธฐ๊ฐ ์์ต๋๋ค. ์ด๊ฒ์ ๋ง์ ์ฑ์ด ์ง์ํด์ผ ํ๋ ์ฌ๋ฌ ๋ฐฉํฅ์์ ํ์ฅ๊ธฐ๋ฅผ ๋งค์ฐ ํ์ค์ ์ผ๋ก ์ฌ์ฉํจ์ ๋ณด์ฌ์ค๋๋ค. ๋ด ํฌํ๋ V1์์ ์ฌ๋ฌ ๋ฐฉํฅ์ ์ง์ํ๋ ๊ฒ์ ๋๋ค.
@JustABearOz ์ผ์ชฝ ํ์ ๋ฉ๋ด๋ ์ค์ ๋ก NavigationView ๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๐ ๋ฐ์ด๋ฌ์ค ๋ฐฑ์ ์น์ ์ด ํ์ฅ ์๋๋ฆฌ์ค๋ผ๋ ๋ฐ ๋์ํฉ๋๋ค. ์ด ๊ฒฝ์ฐ ์๋์ชฝ์ผ๋ก ํ์ฅ๋ฉ๋๋ค. ๋น ํํฅ์ Expander์ ๋ํ ํน์ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์๊ณ ์ถ์ต๋๋ค!
@kat-y ์ข์, ์ผ์ชฝ/์ค๋ฅธ์ชฝ์ด ํ์ํ์ง ์์ง๋ง ์ฑ์ ์ฝ๊ฒ ์ ์ฉํ ์ ์๋ ํ์ฅ๋๋ ์ฐฝ์ 2๊ฐ์ง ์:
1: ๋น ๋ฅธ ์์
๋ฉ๋ด๊ฐ ์๋ ์์ ์คํฌ๋ฆฐ์ท. ํ์คํ ํ์ฅ๋ฉ๋๋ค.
2: Windows์์ ์์คํ
ํธ๋ ์ด์ ํ์
๋ฌ๋ ฅ์๋ ์์ /์ฝ์์ ํ์ํ๋๋ก ํ์ฅ๋๋ ์น์
์ด ์์ต๋๋ค.
V1์ Down๋ง ์ง์ํ์ง ์๊ณ Up/Down ์ง์์ด ๊ฐ๋ฅํ๊ฐ์?
1: ๋น ๋ฅธ ์์ ๋ฉ๋ด๊ฐ ์๋ ์์ ์คํฌ๋ฆฐ์ท. ํ์คํ ํ์ฅ๋ฉ๋๋ค.
@JustABearOz ์ด๋ฌํ ์๋ฅผ ๋๋จํ ๊ฐ์ฌํฉ๋๋ค! 1์ ๊ฒฝ์ฐ: ์ด๊ฒ์ ํฅ๋ฏธ๋ก์ด ๊ฒฝ์ฐ๋ผ๊ณ ์๊ฐํฉ๋๋ค. ํ์ฅ์ 'ํค๋'(ํ์ฅ ๋ฒํผ)์์ '์๋๋ก'์ด์ง๋ง ์ปจํธ๋กค ์์ฒด๋ ํ๋ฉด์ ๋งจ ์๋์ ์์นํ๋ฏ๋ก ํค๋(๋ฐ ํ์ฅ๋ ์ฝํ ์ธ ) ์์ชฝ์ผ๋ก '์ด๋'ํด์ผ ํฉ๋๋ค(๊ทธ๋ ์ง ์์ผ๋ฉด ํ๋ฉด์์ ์คํ๋ฉ๋๋ค!). ์ฑ์ 'ํ๋จ'์ ํ์ฅ ํญ๋ชฉ์ด ์๋ ๊ฒ์ ์ฒ๋ฆฌํ๋ ์ข์ ๋ฐฉ๋ฒ์ธ ๊ฒ ๊ฐ์ต๋๋ค. ๋์ํ์ญ๋๊น?
2: Windows์์ ์์คํ ํธ๋ ์ด์ ํ์ ๋ฌ๋ ฅ์๋ ์์ /์ฝ์์ ํ์ํ๋๋ก ํ์ฅ๋๋ ์น์ ์ด ์์ต๋๋ค.
V1์ Down๋ง ์ง์ํ์ง ์๊ณ Up/Down ์ง์์ด ๊ฐ๋ฅํ๊ฐ์?
๋์ํฉ๋๋ค. ์ด๊ฒ์ ํค๋๊ฐ ์์ญ์ ๋งจ ์๋์ ์๊ณ ์๋ก ํ์ฅ๋๋ ์๋๋ฆฌ์ค์ ๋๋ค! ์ด ๊ฒฝ์ฐ ์บ๋ฆฐ๋์ ํ์ฅ๊ธฐ(๋ฐ ์ ์ฒด ํ์ )๊ฐ ์์ ํ์์ค์ ์ฐ๊ฒฐ๋์ด ์์ต๋๋ค. ์ฑ์์ ํ์ฅ๊ธฐ๊ฐ ์์ชฝ ํ์ฅ์ ํ์๋ก ํ๋ ์ ์ฌํ ์ฐ๊ฒฐ ์์น๊ฐ ์๋ ์๋๋ฆฌ์ค๋ฅผ ๋ณธ ์ ์ด ์์ต๋๊น?
@kat-y ๋ด ๋ง์ ๊ธฐ๋ถ ๋์๋ค๋ ๋ง์ ์๋์ง๋ง 15๋ ์ ์ ์๋ ค์ก๋ ๊ฒ๋ค์ ๋ค์ ์ค๋ช ํด์ผ ํ ๊ฒ ๊ฐ์ ๋๋์ด ๋ญ๋๋ค. ์ ์ค์ ์ฌ์ฉ์์ ํ์ฅ ๋ฐฉํฅ์ ์๋ฅผ ๋ค์ด๋ฌ๋ผ๊ณ ์์ฒญํ๋์ง ์ดํด๊ฐ ๋์ง ์์ต๋๋ค. ๋ด๋ถ์ ์ผ๋ก๋ ์ด๋ฅผ ์ฌ์ ๊ฒํ ์ ์ ์ฉํ๊ณ ๊ฒฝ์์ง์๊ฒ ์ด๋ฅผ ๋ฐฉ์ดํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ค๋ช ์ ๊ฐ๋จํ๊ฒ (1) ์ฌ์ฉ์๊ฐ ๋์์ธ ๋ชฉํ๋ฅผ ๋ฌ์ฑํ ์ ์๋๋ก ๊ถํ์ ๋ถ์ฌํด์ผ ํฉ๋๋ค. ์ปจํธ๋กค๋ก ๋ฌด์์ ํ ์ ์๋์ง ์ฌ๋ถ๋ฅผ ๋งํ๋ ๊ฒ์ Microsoft์ ์ฑ ์์ด ์๋๋๋ค. ๊ฐ์ฅ ์ข์ ๊ฒ์ ์ฐพ๋ ๊ฒ์ ์ฑ ๊ฐ๋ฐ์/๋์์ด๋์ ๋ชซ์ ๋๋ค. (2) ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ์ด๊ฒ์ด ์ ํ ์๋ก์ด ์์ด๋์ด๊ฐ ์๋๋ผ๋ ์ ์ ๋๋ค. ์ด ์์ญ์ ๊ธฐ์กด API๋ฅผ ๋ณต์ฌํ๊ณ ์์ผ๋ฉฐ ์ฑ ํธํ์ฑ์ ์ ์งํด์ผ ํฉ๋๋ค. ๋ค์ ๋งํ์ง๋ง, ์ด๊ฒ์ด ์๋ก์ด ์์ด๋์ด๋ผ๋ฉด ์ ์ฐ๋ฆฌ๊ฐ ๊ทธ๊ฒ์ ๋ฐฉ์ดํด์ผ ํ๋์ง ๋ ์ ์ดํดํ ๊ฒ์ ๋๋ค. ๊ธฐ๋ฅ์ ์๊ฐ์ ํฌ์ํ๊ธฐ ์ ์ ๊ธฐ๋ฅ์ด ์ ์ฉํ์ง ํ์ธํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
ํค๋๋ฅผ ์ ์ธํ๊ณ ์ด ์ปจํธ๋กค์๋ ๋ฌธ์ ๊ทธ๋๋ก ๋ ๊ฐ์ง ์์ฑ์ด ์์ผ๋ฉฐ C#์ด๋ผ๋ฉด WCT ๊ธฐ๋ฐ์ ์ฌ์ฉํ์ฌ ๋ช ์๊ฐ ์์ ์์ฑํ ์ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ WPF/WCT์ ์ค๋๋ ์กด์ฌํ๋ ๊ฒ์ฒ๋ผ ๊ตฌํํ๋ ๊ฒ๋ณด๋ค ๊ทธ๊ฒ์ ๋ํด ์ด์ผ๊ธฐํ๋ ๋ฐ ๋ ๋ง์ ์๊ฐ์ ํ ์ ํ ๊ฒ์ ๋๋ค.
์๊ฒฌ ์
์ฐธ๊ณ ๋ก @ranjeshj @ryandemopoulos @stmoy
@roblo ์์งํ๊ฒ
์ด์ ์๋ ๋นํํฅ ๋ฐฉํฅ์ผ๋ก ์ฌ์ฉ๋๋ Expanders์ ๊ตฌ์ฒด์ ์ธ ์๊ฐ ์์์ต๋๋ค. WinUI ์ปค๋ฎค๋ํฐ์ ๋ชจ๋ ์( @justABearOz๊ฐ ์ง์ ํ ์บ๋ฆฐ๋ ํ๋ผ์ด์์ ํฌํจ)์ ๋ด๊ฐ Michael์๊ฒ์ ๋ฐฐ์ด ๋ชจ๋ ๊ฒ์ Expander์ v1์์ ExpandDirection์ ์ ์งํ๊ธฐ ์ํ ์ฆ๊ฑฐ๋ก WinUI ํ๊ณผ์ ํ ๋ก ์ ๊ฐ์ ธ์ฌ ๊ฒ์ ๋๋ค.
๋ด๊ฐ ์๊ณ ์๋ Expander ์ปจํธ๋กค ๋ชฉ๋ก์ผ๋ก ์ ์์ ์ ๋ฐ์ดํธํ์ต๋๋ค. ๋์น ๋ถ๋ถ์ด ์์ผ๋ฉด ์๋ ค์ฃผ์ธ์.
WPF ์์ค ์ฝ๋์ WCT ์์ค ์ฝ๋๋ฅผ ๋ชจ๋ ์ดํด๋ณด์์ต๋๋ค. ๋๋ ์ด๊ฒ์ด ๋ช ์๊ฐ ์์ WinUI์์๋ ๊ตฌํ๋ ์ ์๋ค๊ณ ํ์ ํฉ๋๋ค. ContentOverlay
์์ฑ์ ์ด๋ฆ์ ๋ฐ๊พธ๊ฑฐ๋ V1์์ ์ ์ธํด์ผ ํ์ง๋ง ์ปจํธ๋กค์ ๋ด๊ฐ ๋ณธ ๊ฒ์ WCT ๊ตฌํ์ ๋ฐ๋ผ์ผ ํฉ๋๋ค.
WPF:
https://github.com/dotnet/wpf/blob/master/src/Microsoft.DotNet.Wpf/src/Themes/XAML/Expander.xaml
https://github.com/dotnet/wpf/blob/master/src/Microsoft.DotNet.Wpf/src/PresentationFramework/System/Windows/Controls/Expander.cs
์ด ๋ ์์ค๋ ๋ชจ๋ Microsoft ๋ฐ ๋ผ์ด์ ์ค๊ฐ ๋ถ์ฌ๋ MIT์์ ๊ฐ์ ธ์จ ๊ฒ์ด๋ฏ๋ก ๊ธฐ๋ณธ์ด ๋์ด์ผ ํ๋ฉฐ 0์์ ์์ํ์ง ๋ง์ญ์์ค. Xamarin Forms๋ WPF->WinUI์ ๊ฐ๋ ๊ณผ ์ผ์นํ์ง ์์ผ๋ฏ๋ก ๋ฌด์ํด์ผ ํฉ๋๋ค(์ถ๊ฐ ๊ธฐ๋ฅ๋ ์์). ํ์ฌ ์๋ฃจ์ ๋ ๋ด๊ฐ ๋ณธ ๊ฒ์์ ํ๊ธฐ์ ์ธ ์๋ก์ด ์์ด๋์ด๊ฐ ์์ต๋๋ค. ์ด ํต์ ๋ ์๊ฐ์ ์ํ์ ํฌ๊ฒ ๊ฒฌ๋ ์ต๋๋ค.
@roblo ์์งํ๊ฒ
์ด์ ์๋ ๋นํํฅ ๋ฐฉํฅ์ผ๋ก ์ฌ์ฉ๋๋ Expanders์ ๊ตฌ์ฒด์ ์ธ ์๊ฐ ์์์ต๋๋ค. WinUI ์ปค๋ฎค๋ํฐ( @JustABearOz๊ฐ ์ง์ ํ ์บ๋ฆฐ๋ ํ๋ผ์ด์์ ํฌํจ)์ ๋ด๊ฐ Michael์๊ฒ์ ๋ฐฐ์ด ๋ชจ๋ ์๋ฅผ Expander์ v1์์ ExpandDirection์ ์ ์งํ๊ธฐ ์ํ ์ฆ๊ฑฐ๋ก WinUI ํ๊ณผ์ ํ ๋ก ์ ๊ฐ์ ธ์ฌ ๊ฒ์ ๋๋ค.
๊ธ์์, ์ ์์ ์ ์ด๊ฒ์ ๋ํด ๋๋ฌด ๋ง์ ๋ ผ์๊ฐ ์์ด์๋ ์ ๋๋ค๋ ๊ฒ์ ๋๋ค. ์ด ์ปจํธ๋กค์ด ์๋ฒฝํ ์์ด๊ธฐ ๋๋ฌธ์ ์ฌ๊ธฐ์์ ๋ด ์ข์ ๊ฐ์ ํํํ๊ธฐ๋ก ์ ํํ์ต๋๋ค. ์๋ก์ด ํธ์ถ๊ธฐ ์ ์ด ๋๋ ๋นต ๋ถ์ค๋ฌ๊ธฐ ์ ์ด๋ ๋ ๋ง์ ๊ฐ๋ ์ด ํ์ํ๋ฉฐ ํ๋ก์ธ์ค๋ฅผ ๋ฐ๋ฅด๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋๊ท๋ชจ ํ๋ก์ธ์ค์ ์ค๋ฒํค๋๊ฐ ์ฌ๊ธฐ์ ๊ธฐ์ ๋ํ๋๊ณ ์์ผ๋ฉฐ WCT์์ ์ ์ด๋ฅผ ๊ตฌํํ๋ ๊ฒ๋ง์ผ๋ก๋ ๋ถ๊ฐ๊ฐ์น๊ฐ ์๋ ์๋ฅ ์์ ๊ณผ ํ ๋ก ์ ํ๋ ๋ฐ ํจ์ฌ ๋ ๋ง์ ์๊ฐ์ ์๋นํ๊ฒ ๋ฉ๋๋ค. ๋๋ ๋ํ WinUI ํ์ด ๋ค์ ์ฐ๋ ค๋๋ ๋ค๋ฅธ ์ด์ ์์ ์ ์ฌ์ฉํ๋ ๊ฒ์ ์์ง ๋ณด์ง ๋ชปํ์ต๋๋ค. XAML ์ปจํธ๋กค ํ ํ๋ฆฟ์ ๋ค์ ์์ง๋์ด๋งํ ํ์๊ฐ ์์ต๋๋ค.
WinUI ํ๋ก์ ํธ @kat-y์ ์ค์ ๊ฒ์ ํ์ํฉ๋๋ค. Xaml์ ์ค๋ ์ญ์ฌ๋ฅผ ๊ฐ์ง๊ณ ์์ง๋ง ์ฒ์ ์ฌ์ฉํ๋ ์ฌ๋๋ค์๊ฒ๋ ์ฝ๊ฐ ๊ธฐ์ดํ ์ ์์ต๋๋ค. WinUI๋ ์๋ ๋ฐฉ์์ ์ฌ๊ณ ํ ์ ์๋ ๊ธฐํ์ด์ง๋ง ์ด ๊ฒฝ์ฐ ํ์ฅ๊ธฐ๋ ๋น๊ต์ ๊ฐ๋จํ ์ปจํธ๋กค์ด๋ฏ๋ก WPF์์ WinUI๋ก์ ๊ฐ๋จํ ์ด๋์ผ๋ก ์ถฉ๋ถํฉ๋๋ค.
@robloo XAML ์ปจํธ๋กค ํ ํ๋ฆฟ์ ๋ค์ ์์ง๋์ด๋งํ ํ์๊ฐ ์๋ค๋ ๊ทํ์ ์ฃผ์ฅ์ ๋์ํ์ง ์์ต๋๋ค. WPF AFAIR์๋ WinUI/Fluent์์ ์ ์ ํ์ง ์์ ๋ง์ ํฌ๋กฌ ์ ์ฌ ์์๊ฐ ์์ต๋๋ค.
Chevron ๋ฐ ํฐ์น ๋์ ํฌ๊ธฐ๋ฅผ ์ฒ๋ฆฌํ๊ณ ๊ธ๊ผด ํฌ๊ธฐ ์กฐ์ ํฌ๊ธฐ๋ฅผ ์ฌ์ฉํฉ๋๋ค. Chevron์ ์ ๊ฑฐํ๊ฑฐ๋ ์ถ๊ฐํ๊ธฐ ์ฌ์์ผ ํฉ๋๋ค.
์ด ์์๋ ํ
์คํธ์ ์ผ์นํ๋ ๊ฐ๋งค๊ธฐ ๋ชจ์์ด ์์ต๋๋ค.
์ด ์์๋ ๊ฐ๋งค๊ธฐ ๋ชจ์์ด ์ ํ ์์ต๋๋ค.
์ด ์์๋ ์ ์ชฝ์ด ๊ฐ๋งค๊ธฐ ๋ชจ์์ ํฅํ๊ณ ์์ต๋๋ค.
๊ตฌํ๊ณผ ๊ด๋ จํ์ฌ ์ฌ์ฉ์๊ฐ ์ ๋๋ฉ์ด์ ์ ๋์ง ์๋ ํ ์ด๊ณ ๋ซ์ ๋ ์ ๋๋ฉ์ด์ ์ ํ์ด ์์ด์ผ ํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ์ํ๋ง ์ ํ๋ฉ๋๋ค.
๊ตฌํ๊ณผ ๊ด๋ จํ์ฌ ์ฌ์ฉ์๊ฐ ์ ๋๋ฉ์ด์ ์ ๋์ง ์๋ ํ ์ด๊ณ ๋ซ์ ๋ ์ ๋๋ฉ์ด์ ์ ํ์ด ์์ด์ผ ํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ์ํ๋ง ์ ํ๋ฉ๋๋ค.
์ ๋๋ฉ์ด์ ์ ๋ํด ๋ฌผ์ด๋ณด๊ฒ ๋์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ ์ด์์์ ์ ๋๋ฉ์ด์ ์ ์ ์ฉํ๋ ๋ฐ ๋น์ฉ์ด ๋๋ฌด ๋ง์ด ๋๋ ์๋๋ฆฌ์ค์์ ์ปจํธ๋กค์ ๋ํด ๋นํ์ฑํํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ด์ผ ํฉ๋๊น? ๋ชจ๋ ์ฌ์ฉ์/๊ฐ๋ฐ์๊ฐ ์ฝ๊ฐ ๋ฐ์์ด ์๊ฑฐ๋ ์ํ์ง ์๋ ๊ฒ๊ณผ ๊ฐ์ ์ ๋๋ฉ์ด์ ์ ์ํ๋ ๊ฒ์ ์๋๋๋ค(์: TreeView). ํด๋น ์ง์ ์ ์ฌ์ฉ์ ์ง์ ํ๊ธฐ ์ํด ์ปจํธ๋กค์ ๋ค์ ํ ํ๋ฆฟํ์ง ์๋ ๊ฒ์ด ๋ ๋์ ์ ์์ต๋๋ค. ์ฌ์ฉ์ ์ ์ํ ์ ์๋ ๋ ๋ค๋ฅธ ์ฌํญ์ ์ ๋๋ฉ์ด์ ์ง์ ์๊ฐ์ ๋๋ค. ๊ฒฝ์ฐ์ ๋ฐ๋ผ ์งง์ ์ ๋๋ฉ์ด์ ์ด ๊ธด ์ ๋๋ฉ์ด์ ๋ณด๋ค ๋ซ์ต๋๋ค.
๋ชจ๋ ํ๋ฅญํ ํ ๋ก ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ๋ช ๊ฐ์ง ์๊ฐ
๊ตฌํ๊ณผ ๊ด๋ จํ์ฌ ์ฌ์ฉ์๊ฐ ์ ๋๋ฉ์ด์ ์ ๋์ง ์๋ ํ ์ด๊ณ ๋ซ์ ๋ ์ ๋๋ฉ์ด์ ์ ํ์ด ์์ด์ผ ํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ์ํ๋ง ์ ํ๋ฉ๋๋ค.
์ ๋๋ฉ์ด์ ์ ๋ํด ๋ฌผ์ด๋ณด๊ฒ ๋์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ ์ด์์์ ์ ๋๋ฉ์ด์ ์ ์ ์ฉํ๋ ๋ฐ ๋น์ฉ์ด ๋๋ฌด ๋ง์ด ๋๋ ์๋๋ฆฌ์ค์์ ์ปจํธ๋กค์ ๋ํด ๋นํ์ฑํํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ด์ผ ํฉ๋๊น? ๋ชจ๋ ์ฌ์ฉ์/๊ฐ๋ฐ์๊ฐ ์ฝ๊ฐ ๋ฐ์์ด ์๊ฑฐ๋ ์ํ์ง ์๋ ๊ฒ๊ณผ ๊ฐ์ ์ ๋๋ฉ์ด์ ์ ์ํ๋ ๊ฒ์ ์๋๋๋ค(์: TreeView). ํด๋น ์ง์ ์ ์ฌ์ฉ์ ์ง์ ํ๊ธฐ ์ํด ์ปจํธ๋กค์ ๋ค์ ํ ํ๋ฆฟํ์ง ์๋ ๊ฒ์ด ๋ ๋์ ์ ์์ต๋๋ค. ์ฌ์ฉ์ ์ ์ํ ์ ์๋ ๋ ๋ค๋ฅธ ์ฌํญ์ ์ ๋๋ฉ์ด์ ์ง์ ์๊ฐ์ ๋๋ค. ๊ฒฝ์ฐ์ ๋ฐ๋ผ ์งง์ ์ ๋๋ฉ์ด์ ์ด ๊ธด ์ ๋๋ฉ์ด์ ๋ณด๋ค ๋ซ์ต๋๋ค.
์ผ๋ถ ์ปจํธ๋กค์๋ ํ ๋นํ ์ ์๋ ์ ํ ์์ฑ์ด โโ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ฐ๋ผ์ ์ ๋๋ฉ์ด์ ์ด ์๋ ์คํ ๋ฆฌ๋ณด๋๊ฐ ๋ฆฌ์์ค๋ก ํฌํจ๋ ๊ฒฝ์ฐ ์ ์ฉํ ์ ์์ผ๋ฉฐ ๋ค์ ํ ํ๋ฆฟ ์์ด ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
์์คํ ์ค์ ์ด ์ ๋๋ฉ์ด์ ์ ๋๋ฉด ์ ํ์ ์ฌ์ ์ํด์ผ ํฉ๋๋ค.
UIElement.Transitions?
https://docs.microsoft.com/en-us/uwp/api/windows.ui.xaml.uielement.transitions?view=winrt-19041
๋ํ IsEnabled ์์ฑ์๋ Disabled ์ํ๊ฐ ์์ด์ผ ํฉ๋๋ค. Disabled Expanded์ Disabled Collapsed๊ฐ ์์ด์ผ ํฉ๋๊น, ์๋๋ฉด Disabled๊ฐ ํญ์ ์ ํ ์์ด์ผ ํฉ๋๊น?
์ ๋๋ฉ์ด์ ์ ๋ํ ํฅ๋ฏธ๋ก์ด ์ . ์ฐ๋ฆฌ๋ ์์คํ ์ค์ ์ผ๋ก ๋ชจ๋ ์ ๋๋ฉ์ด์ ์ ๋์ง๋ง ํ์ฌ ํ ํ๋ฆฟ์ ๋ค์ ๋ง๋๋ ๊ฒ ์ธ์๋ ์ ๋๋ฉ์ด์ ์ ๋๋๋ก ์์ก์ด๋ฅผ ๋ ธ์ถํ์ง ์๋๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ ๋๋ฉ์ด์ ์ ๋ํ ํฅ๋ฏธ๋ก์ด ์ . ์ฐ๋ฆฌ๋ ์์คํ ์ค์ ์ผ๋ก ๋ชจ๋ ์ ๋๋ฉ์ด์ ์ ๋์ง๋ง ํ์ฌ ํ ํ๋ฆฟ์ ๋ค์ ๋ง๋๋ ๊ฒ ์ธ์๋ ์ ๋๋ฉ์ด์ ์ ๋๋๋ก ์์ก์ด๋ฅผ ๋ ธ์ถํ์ง ์๋๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋ฎ์ด์ธ Transition ์ปฌ๋ ์ ์ด ์๋ค๊ณ ๊ฐ์ ํ๊ณ ์ ๋๋ฉ์ด์ ์ ๋๋ ค๋ ๊ฒฝ์ฐ Transition ์ปฌ๋ ์ ์ null๋ก ๋ฎ์ด์ฐ๋ Style์ ์ถ๊ฐํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
ExpandTransition ๋ฐ CollapseTransition์ ํฌํจํ์ฌ ์ปจํธ๋กค์ ์์ฑ์ ์ํด ์ค์ ๋ ๋ฐฉํฅ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ๋ฐ์๊ฐ ๊ฐ๊ฐ์ ๋ํ ์ ํ์ ์ค์ ํ ์ ์์ต๋๋ค.
๋๋ ๊ทธ ์์ด๋์ด๊ฐ ๋ง์์ ๋ค์ง๋ง, ํ์ฌ ์ฌ์ฉ์ ์ ์ ๊ธฐ๋ฅ์ ์ ํํ๋ ์ฌ์ฉ์ ์ ์ ํ ๋ง ์ ํ์ ์์ฑํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด๋ ๊ฒํ๋ฉด ์ ๊ฑฐํ์ฌ ์ฝ๊ฒ ๋นํ์ฑํ ํ ์ ์์ต๋๋ค.
๋ํ IsEnabled ์์ฑ์๋ Disabled ์ํ๊ฐ ์์ด์ผ ํฉ๋๋ค. Disabled Expanded์ Disabled Collapsed๊ฐ ์์ด์ผ ํฉ๋๊น, ์๋๋ฉด Disabled๊ฐ ํญ์ ์ ํ ์์ด์ผ ํฉ๋๊น?
IsExpanded
๋ฐ IsEnabled
์์ฑ์ ์ฌ์ฉํ์ฌ ๋ ์ค ํ์ํ ์กฐํฉ์ ์์ฑํ ์ ์๋ TreeView ์ปจํธ๋กค์ ๋ฏธ๋ฌ๋งํ์ง ์๋ ์ด์ ๋ ๋ฌด์์
๋๊น? ๋นํ์ฑํ๋ ํ์ฅ์ด ์ด๋ค ๊ฒฝ์ฐ์ ๊ฐ์ฅ ์ ์๋ํ๋ค๋ฉด ๊ทธ๋ ๊ฒ ํ ์ ์์ต๋๋ค. ๋นํ์ฑํ ๋ ์ถ์๊ฐ ํ์ํ ๊ฒฝ์ฐ ์ด ๋ฐฉ๋ฒ์ผ๋ก๋ ๊ฐ๋ฅํฉ๋๋ค.
@robloo XAML ์ปจํธ๋กค ํ ํ๋ฆฟ์ ๋ค์ ์์ง๋์ด๋งํ ํ์๊ฐ ์๋ค๋ ๊ทํ์ ์ฃผ์ฅ์ ๋์ํ์ง ์์ต๋๋ค. WPF AFAIR์๋ WinUI/Fluent์์ ์ ์ ํ์ง ์์ ๋ง์ ํฌ๋กฌ ์ ์ฌ ์์๊ฐ ์์ต๋๋ค.
@mdtauk ์, ์ ์ถ์ฒ์ https://docs.microsoft.com/en-us/windows/communitytoolkit/controls/expander์์ "WCT ๊ตฌํ์ ๋ฐ๋ผ์ผ ํจ"์ด์์ต๋๋ค
@robloo XAML ์ปจํธ๋กค ํ ํ๋ฆฟ์ ๋ค์ ์์ง๋์ด๋งํ ํ์๊ฐ ์๋ค๋ ๊ทํ์ ์ฃผ์ฅ์ ๋์ํ์ง ์์ต๋๋ค. WPF AFAIR์๋ WinUI/Fluent์์ ์ ์ ํ์ง ์์ ๋ง์ ํฌ๋กฌ ์ ์ฌ ์์๊ฐ ์์ต๋๋ค.
@mdtauk ๊ธ์, ๋ด ์ถ์ฒ์ ์ฐ๋ฆฌ๊ฐ ์ฌ๊ธฐ์์ "WCT ๊ตฌํ์ ๋ฐ๋ผ์ผ ํ๋ค"๋ ๊ฒ์ด์์ต๋๋ค...
WPF ๋ฒ์ ์ XAML์์ ๋ณ๊ฒฝ ์ฌํญ์ด ์๋ค๊ณ ๊ฐ์ ํ์ต๋๋ค.
๊ทธ๋ฌ๋ ๋๋ ์ฌ์ ํ WinUI ๋์์ธ ํ์ด figma ํดํท์ ํฌํจํ ์ฌ์์ ํ์ธํ๊ธฐ ์ํด์๋ง ๊ทธ๊ฒ์ ํ์ธํ๊ณ ๊ทธ ๋ณํ์ ์น์ธํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
@kat-y ํ๋ก์ ํธ๊ฐ ์ฒ์์ด๋ผ๋ฉด ์ ๊ฐ ๊ฑฐ์น ๊ฒ ๋ค๋ ธ๋ค๋ฉด ์ฌ๊ณผ๋๋ฆฝ๋๋ค. ๋๋ ํ์คํ ํ์ํ ์ผ๋ถ ์์ญ์์ ํ๋ก์ ํธ ์๋๋ฅผ ํฅ์์ํฌ ์ ์๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ ์์ ์ ์ง์งํฉ๋๋ค. ๋ํ ๊ณผ๊ฑฐ์ ์ด๋ฏธ ์ํ๋ ์์ ๊ณผ ์ง๋ 15๋ ๋์ ๋ง์ ํ ์คํธ๋ฅผ ๊ฑฐ์ณค๋ ์์ ์ ์ด๋ป๊ฒ ์ฌ์ฉํด์ผ ํ๋์ง์ ๋ํด์๋ ์ค๋ช ํฉ๋๋ค. ๋ฌผ๋ก ์ด ์ค ์ด๋ ๊ฒ๋ ๊ทํ๋ ๋๊ตฌ์๊ฒ๋ ๊ฐ์ธ์ ์ผ๋ก ์ง์๋ ๊ฒ์ ์๋๋๋ค. ๋ ๋ง์ ์ฝ๋ฉ/์ ์ ํ๋ก์ ํธ ๊ด๋ฆฌ๋ฅผ ์ํด ํ์ด ๋ ๊ฐ์ํ๋๊ณ ๊ท ํ์ ์ฌ์กฐ์ ํด์ผ ํ๋ ์๋ ๋์ Microsoft์์ ๋ณด์์จ ์ผ๋ฐ์ ์ธ 'ํฝ์ฐฝ' ๋ฌธ์ ์ ๋๋ค. ๊ณํ๋งํผ ์ข์ ๊ฒ์ ์ํ์ฐฉ์ค๋ฅผ ๋ฅ๊ฐํ๋ ๊ฒ์ด ์์ผ๋ฏ๋ก ๊ฒฐ๊ตญ ๋ฐ๋ณต์ ์๋๊ฐ ์น๋ฆฌํฉ๋๋ค.
@ranjeshj @michael-hawker ์ปค๋ฎค๋ํฐ ํดํท์์ ์ด๋ฏธ ์ํ๋ ๊ฒ์ ์ฌ์ฉํ์ง ์๋ ์ด์ ๋ ๋ฌด์์ ๋๊น? WinUI ํ์ด ์๋ก์ด ์ ๊ทผ ๋ฐฉ์์ ์ทจํ๋ ๊ฒ์ ์ด๋ฒ์ด ์ฒ์์ด ์๋๋๋ค. ์ด๋ ๋ถํ์ํ๊ฒ ์์ ์ ๋ณต์ ํ๊ณ ์ต์ ์ ๊ฒฝ์ฐ ๋จํธํ๋ฅผ ์ผ์ผํต๋๋ค. WCT ๋ฒ์ ์ ์ด๋ฏธ WPF ์์ด๋์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ์ผ๋ฉฐ ํ์ํ 'ํ๋์ ' ๋ณ๊ฒฝ ์ฌํญ์ ์ ์ฉํ์ต๋๋ค.
@ranjeshj @michael-hawker ์ปค๋ฎค๋ํฐ ํดํท์์ ์ด๋ฏธ ์ํ๋ ๊ฒ์ ์ฌ์ฉํ์ง ์๋ ์ด์ ๋ ๋ฌด์์ ๋๊น? WinUI ํ์ด ์๋ก์ด ์ ๊ทผ ๋ฐฉ์์ ์ทจํ๋ ๊ฒ์ ์ด๋ฒ์ด ์ฒ์์ด ์๋๋๋ค. ์ด๋ ๋ถํ์ํ๊ฒ ์์ ์ ๋ณต์ ํ๊ณ ์ต์ ์ ๊ฒฝ์ฐ ๋จํธํ๋ฅผ ์ผ์ผํต๋๋ค. WCT ๋ฒ์ ์ ์ด๋ฏธ WPF ์์ด๋์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ์ผ๋ฉฐ ํ์ํ 'ํ๋์ ' ๋ณ๊ฒฝ ์ฌํญ์ ์ ์ฉํ์ต๋๋ค.
Community Toolkit์ C#์ ์์ผ๋ฉฐ WinUI์๋ C/C++ ์ฝ๋๊ฐ ํ์ํฉ๋๋ค.
๋ํ WinUI ๋์์ธ ํ์ Toolkit ๋ฒ์ ์ ๋ํด AFAIK์ ๋ํด ๋งํ ์ ์์์ผ๋ฏ๋ก Windows ๋ฐ ์ฑ ๋์์ธ ํ์ ์๊ตฌ ์ฌํญ์ ์ฌ์ฉ์ ์ง์ ์๋ฃจ์ ์ ๋ํ ์ ์ด๋ฅผ ์ฑํํ๋ ค๋ ๊ฒฝ์ฐ ํน์ ์๊ตฌ ์ฌํญ์ด ์์ ์ ์์ต๋๋ค.
Community Toolkit์ C#์ ์์ผ๋ฉฐ WinUI์๋ C/C++ ์ฝ๋๊ฐ ํ์ํฉ๋๋ค.
C# ๋ฐ C++/WinRT๋ก/์์ ์ฝ๋๋ฅผ ๋ฒ์ญํ๋ ๊ฒ์ ๋น๊ต์ ๊ฐ๋จํฉ๋๋ค. ํนํ https://github.com/windows-toolkit/WindowsCommunityToolkit/tree/master/Microsoft.Toolkit.Uwp.UI.Controls/Expander ์ฝ๋๋ฅผ ์ด๋ฏธ ๋ณธ Expander์ ๊ฒฝ์ฐ
๋ํ WinUI ๋์์ธ ํ์ Toolkit ๋ฒ์ ์ ๋ํด AFAIK์ ๋ํด ๋งํ ์ ์์์ผ๋ฏ๋ก Windows ๋ฐ ์ฑ ๋์์ธ ํ์ ์๊ตฌ ์ฌํญ์ ์ฌ์ฉ์ ์ง์ ์๋ฃจ์ ์ ๋ํ ์ ์ด๋ฅผ ์ฑํํ๋ ค๋ ๊ฒฝ์ฐ ํน์ ์๊ตฌ ์ฌํญ์ด ์์ ์ ์์ต๋๋ค.
ํน์ ํฌ์ธํธ์ ๊ฒฝ์ฐ ๊ทธ๋ ์ต๋๋ค. ๊ทธ๋ฌ๋ ์ผ๋ฐ์ ์ธ ์ ์ด ๊ธฐ๋ฅ์ ๋ํด์๋ ๋์ํ์ง ์์ ์ ์์ต๋๋ค. WCT๋ ์ฐ๋ฆฌ์๊ฒ ์ด๋ฏธ 95% ์์ฑ๋์ ๊ธฐ๋ฅ 100% ์์ฑ๋๋ฅผ ๊ฐ์ ธ๋ค ์ค ๊ฒ์ ๋๋ค. ์๋จ์ ์ ์ฉ๋ ๋ชจ๋ ๋์์ธ ๋ณ๊ฒฝ ์ฌํญ์ ์ฌ์ํ ๊ฒ์ ๋๋ค.
@roblo ๊ธฐ๋ฅ์ด ๋ค๋ฅธ ๋ถ๋ถ์ ๋ํด ์์ธํ
@ranjeshj ์ฐ๋ฆฌ๋ ๊ฐ์ ํ์ด์ง์ ์์ง ์์ ์ ์์ต๋๋ค. ์ ์๋ API๊ฐ WCT ๋๋ WPF์ ํฌ๊ฒ ๋ค๋ฅด๋ค๊ณ ์ ์ํ ๊ฒ์ ์๋๋๋ค.
์ด ์ปจํธ๋กค์ ์ฒซ ๋ฒ์งธ ๋ฒ์ ์์๋ ExpandDirection์ด ์ง์๋์ง ์์ ์ ์๋ค๊ณ ์ธ๊ธํ์ต๋๋ค. ์ด๋ ์ด ๊ธฐ๋ฅ์ ๋ํ ์ค๋ ์ญ์ฌ๋ฅผ ๊ฐ์ง Expander์ ๋ฌธ์ ์ธ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๋ ๋ค๋ฉด ์ด ๊ธฐ๋ฅ์ด ์ ํ์ํ์ง ์ ๋นํํด์ผ ํ ๊ฒ ๊ฐ์์ต๋๋ค.
๋๋ ์ด๊ฒ์ ํ์ฅ ๋ฐฉํฅ์ผ๋ก ๋น ๋ฅด๊ฒ ๊ตฌํํ๊ธฐ ์ํด WCT๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ฌ์ฉํ ๊ฒ์ ์ ์ํ์ต๋๋ค. XAML ํ ํ๋ฆฟ์ ๋ณต์ฌํ์ฌ ๋ถ์ฌ๋ฃ๋ ๋์ C# -> C++ ํฌํธ๋ง ํ์ํ๋ฏ๋ก(์ด๋ฅผ ์ํด ์ฝ๋ ์จ๊น์ด ๋งค์ฐ ์์) ํ ์ ๋ค์ ๋ง๋ค ํ์๊ฐ ์์ต๋๋ค. ๊ทธ๋ฌ๋ฉด ํ์ํ ๋ชจ๋ ๊ธฐ๋ฅ์ด ๊ตฌํ๋๊ณ ExpandDirection์ ์ถ๊ฐํ ์๊ฐ์ด ์ถฉ๋ถํ์ง ์๋ค๋ ์ฐ๋ ค๋ฅผ ํผํ ์ ์์ต๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ์ฐ๋ฆฌ์๊ฒ ์์ ํ ๊ธฐ๋ฅ์ ์ ์ด๋ฅผ ์ ๊ณตํ ๊ฒ์ ๋๋ค. ๊ทธ๋ฐ ๋ค์ @mdtauk ๋๋ ๋ค๋ฅธ ์ฌ๋์ ์ ์์ ๊ธฐ๋ฐ์ผ๋ก ๋์์ธ/์คํ์ผ๋ง ๋ณ๊ฒฝ์ ๋งจ ์์ ์ํํ ์ ์์ต๋๋ค. ์ดํด๊ฐ ๋์ง ์์ต๋๋ค. (1) ExpandDirection์ด V1์ ๋๋ง์ ์์ ๊ฐ๋ฅ์ฑ์ด ์๋ ์ด์ (2) ์๊ฐ์ด ์ ํ์ ์ด๋ผ๋ฉด ๊ธฐ์กด ์ฝ๋๋ฅผ ์ฌ์ฉํ์ง ์๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
์, ์ผ๋ฐ์ ์ผ๋ก WinUI 3 ๊ฐ๋ฐ์ ๋ํ ์ ์ ์ข์ ๊ฐ์ด ์ด ๋ถ๋ถ์ ์ํฅ์ ๋ฏธ์น๊ณ ์์ผ๋ฉฐ ์ด์ ๋ํด ์ฌ๊ณผ๋๋ฆฝ๋๋ค.
@robloo ๋ญ๊ฐ ๋๋ง์
V1์ ํฌํจ๋์ด์ผ ํ๊ณ V2์ ํฌํจ๋์ด์ผ ํ๋ ๊ธฐ๋ฅ์ ์ฐ์ ์์๋ฅผ ์ง์ ํ ๋ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋์ง ์๋ ๋ ๊ฑฐ์ ํญ๋ชฉ์ด ์๋ ํต์ฌ ๋ฐ ํ์ ์์ฑ ๋ฐ ๋์๋ง ์์ ๊ฒ์ ๋๋ค.
Microsoft๋ ์ด์ ํ๋ ์์ํฌ์ ๋๋ฑํ ์์ค์ ๋๋ฌํ๋ ๊ฒ๋ฟ๋ง ์๋๋ผ ๊ณ ๊ฐ์ ์๊ตฌ์ ํ์์ ๋ฐ๋ผ ์ถ๊ฐํ ๊ธฐ๋ฅ์ ๊ฒฐ์ ํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋ฐ๋ผ์ _์ ๋นํ_ํ๋ ๊ฒ์ด ์๋๋ผ ๊ฐ๋ฐ์๊ฐ UI์์ ์ด๋ฌํ ์ ์ด ํจํด์ผ๋ก ์ค์ ๋ก ๋ฌด์์ ํ๋์ง ์ดํดํ๋ ค๊ณ ํฉ๋๋ค.
Windows ์
ธ์๋ง ์ฌ๋ฌ ๋ฒ์ ์ ํ์ฅ๊ธฐ ์ ์ด ํจํด์ด ์๋ค๋ ์ฌ์ค์ ์ด๋ฅผ ํฌํจํด์ผ ํ๋ ์ถฉ๋ถํ ์ด์ ๊ฐ ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ๊ฐ์ ๊ตฌํ์ด ๋ค๋ฅด๊ฒ ๋์ํ์ง ์๋๋ผ๋ ๋ค๋ฅด๊ฒ ๋ณด์ธ๋ค๋ ์ฌ์ค์ ๋์์ธ ํ์ด ๋ด๋ถ ํ์ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ๊ธฐ ์ํด ์ ์ด ๋์์ธ์ ํตํฉํ๋ ๋ฐ ์ถฉ๋ถํ ์ด์ ๊ฐ ๋ฉ๋๋ค.
@mdtauk ์ธ์ ๋์ฒ๋ผ ์ข์ ์ง์ ์ ๋๋ค. ๊ทธ๋ฌ๋ ์ด๊ฒ์ด ์ง์ ์ผ๋ก Microsoft๊ฐ ์ทจํ๊ณ ์๋ ์ ๊ทผ ๋ฐฉ์์ด๋ผ๋ฉด ์ด ์ฒ ํ์ ํ ๊ฐ์ง ์ค์ํ ์ ์์ ๋์ํ์ง ์์ ์ ์์ต๋๋ค. WinUI๊ฐ ์ฑ๊ณตํ๋ ค๋ฉด ๊ธฐ์กด ์ฑ ๊ฐ๋ฐ์์๊ฒ ์๋ฏธ๊ฐ ์์ด์ผ ํฉ๋๋ค. ๋๋ UWP๊ฐ ๊ฒฐ์ฝ ์์๋์ง ์์๋ค๋ ๊ฒ์ ์ฐ๋ฆฌ ๋ชจ๋ ์๊ณ ์๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ UWP ์๋๋ฆฌ์ค๋ฅผ ํผํ๋ ค๊ณ ๋ ธ๋ ฅํ๊ณ ์์ต๋๋ค. Microsoft๊ฐ WinUI๋ก ๋์ด๊ฐ๋๋ก ์ค๋ํด์ผ ํ๋ ๊ฐ๋ฐ์๋ ์ด์ UWP์ ๋ง์ฐฌ๊ฐ์ง๋ก WPF ๊ฐ๋ฐ์์ ๋๋ค. WPF ์ฑ์ด UWP๋ก ์ ํํ์ง ์์ ์ด์ ์ค ํ๋๋ ํนํ UWP๊ฐ ์ฒ์ ์ถ์๋์์ ๋ ์ฌ๋ฌ ์ฃผ์ ๊ธฐ๋ฅ ์์ญ์์ ๋งค์ฐ ์ด์ ํ ๋๋ฑ๋ฌผ์ด์๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ด๊ฒ์ด ๋ก๋๋งต์์ ๋ฅ๊ทผ ๋ชจ์๋ฆฌ๊ฐ ๋๋ฝ๋ ๊ฒ์ ๋ณด์์ ๋ UWP ์ ๋ชฝ์ ํ์ํ๊ธฐ ์์ํ ์ด์ ์ ๋๋ค(WPF์ ๊ธฐ๋ณธ ๋ฅ๊ทผ ๋ชจ์๋ฆฌ๋ ๊ฐ์ฅ ์ค๋ซ๋์ UWP์์ ์ ์ธ๋์์ต๋๋ค). 1์์ ์ฐ์ ์์๋ WPF์ UWP ๋ชจ๋์์ ์ค๋ ๋ถ๋๋ฌ์ด ํฌํ ๊ฒฝํ์ ์ํ ๊ฒ์ด์ด์ผ ํ๋ฉฐ ์์งํ WPF๋ ํจ์ฌ ๋ ๋ง์ ์ฑ์ด ์๊ณ Microsoft๊ฐ WinUI๋ฅผ ์ฌ์ฉํ๋ ๋ฐ์คํฌํฑ ์ฌ๋ก์ ๋จผ์ ์ด์ ์ ๋ง์ถ๊ณ ์๊ธฐ ๋๋ฌธ์ ์๋ง๋ ๋ ๋์ ์ฐ์ ์์์ฌ์ผ ํฉ๋๋ค. ๋ค์ ๋งํ์ง๋ง, ์ฐ๋ฆฌ๋ ๋ฐํด๋ฅผ ์ฌ๋ฐ๋ช ํ๋ ๊ฒ์ ๋ํด ๋งค์ฐ ์กฐ์ฌํด์ผ ํ๊ณ ์ ๊ทน์ ์ผ๋ก ํผํด์ผ ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ฐ๊ฐ์ ๊ตฌํ์ด ๋ค๋ฅด๊ฒ ๋์ํ์ง ์๋๋ผ๋ ๋ค๋ฅด๊ฒ ๋ณด์ธ๋ค๋ ์ฌ์ค์ ๋์์ธ ํ์ด ๋ด๋ถ ํ์ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ๊ธฐ ์ํด ์ ์ด ๋์์ธ์ ํตํฉํ๋ ๋ฐ ์ถฉ๋ถํ ์ด์ ๊ฐ ๋ฉ๋๋ค.
๋๋ ํญ์ ๋์์ธ์ ์์ ํด์ผ ํ ์๋ ์๋ค๋ ๊ฒ์ ์ดํดํ์ต๋๋ค. ๊ฒ๋ณด๊ธฐ ์ ์ด ๊ฐ๋ ์ ์ฌ์ฉํ๋ฉด ์ด๊ฒ์ ExpandDirection๊ณผ๋ ๋ณ๊ฐ์ ๋ฌธ์ ์ ๋๋ค. ๋์์ธ์ ๋ ํ๋ํํ๊ฑฐ๋ ๊ฒฝ์ฐ์ ๋ฐ๋ผ ๋ ์ ์ฉํ๊ฒ ๋ง๋ค์ด์ผ ํ๋ ๊ฒฝ์ฐ์๋ ์์ฃผ ์ข์ต๋๋ค. ์๋์ ์ผ๋ก ์ฌ์ํด์ผ ํฉ๋๋ค. ํ๋ฃจ๊ฐ ๋๋๋ฉด ๋ฏธ์ธ ์ ์ด๊ฐ ํ์ํ ์ฌ๋๋ค์ ์ํด ์์ ํ ๋ค์ ํ ํ๋ฆฟ์ ์ฌ์ฉํ ์๋ ์์ต๋๋ค.
์ ๋๋ฉ์ด์ ์ ๋ํ ํฅ๋ฏธ๋ก์ด ์ . ์ฐ๋ฆฌ๋ ์์คํ ์ค์ ์ผ๋ก ๋ชจ๋ ์ ๋๋ฉ์ด์ ์ ๋์ง๋ง ํ์ฌ ํ ํ๋ฆฟ์ ๋ค์ ๋ง๋๋ ๊ฒ ์ธ์๋ ์ ๋๋ฉ์ด์ ์ ๋๋๋ก ์์ก์ด๋ฅผ ๋ ธ์ถํ์ง ์๋๋ค๊ณ ์๊ฐํฉ๋๋ค.
ํ์ง๋ง ๊ณต์ ํ๊ฒ ๋งํ๋ฉด ์ ๋๋ฉ์ด์ ์ ์ฌ์ฉํ๋ ์ปจํธ๋กค์ ๊ฑฐ์ ์์ต๋๋ค. TreeView์ NavigationView๋ ๊ธฐ๋ณธ์ ์ผ๋ก Expander๋ฅผ ์ฌ์ฉํ์ง๋ง ๋ ๋ค ํ์ฅ/์ถ์์ ์ ๋๋ฉ์ด์ ์ ์ฌ์ฉํ์ง ์์ต๋๋ค. ์ ๋๋ฉ์ด์ ์ ์ฌ์ฉํ๋ ๋๋ถ๋ถ์ ์ปจํธ๋กค์ ์ผ๋ฐ์ ์ผ๋ก ์ด์ ์์กดํฉ๋๋ค(์: ProgressBar ๋๋ ProgressRing). ๊ทธ๋ฌ๋ Expander๋ ์ด์ ์์กดํ์ง ์์ผ๋ฉฐ "์์ผ๋ฉด ์ข์" ๊ฒ์ ๋๋ค. ๋ ๋ค๋ฅธ ์๋ ์ผ๋ถ ์ฌ๋๋ค์ด ์ ๋๋ฉ์ด์ ์ ์ซ์ดํด์ WCT Expander ์ปจํธ๋กค์ ์ฌ์ฉํ์ง ์์๋ค๋ ๊ฒ์ ๋๋ค. ๊ฐ๋ฅํ ํ ๋ง์ ์ฌ๋์ ํฌํจ์ํค๋ ค๋ฉด ์์น ์๋ ์ ๋๋ฉ์ด์ ์ ๋นํ์ฑํํ๋ ์ฌ์ด ๋ฐฉ๋ฒ์ด ์์ผ๋ฉด ๋ ์ฝ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค.
๋ฎ์ด์ธ Transition ์ปฌ๋ ์ ์ด ์๋ค๊ณ ๊ฐ์ ํ๊ณ ์ ๋๋ฉ์ด์ ์ ๋๋ ค๋ ๊ฒฝ์ฐ Transition ์ปฌ๋ ์ ์ null๋ก ๋ฎ์ด์ฐ๋ Style์ ์ถ๊ฐํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
๊ทธ๋ฌ๋ ์ด๊ฒ์ด ๊ทธ๊ฒ์ ๋นํ์ฑํ/ํ์ฑํํ๋ ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ์ ๋๊น? ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ์ฌ๋ฌ ์คํ์ผ์ ์ ๊ณตํ ๋ AccentColorButtonStyle ๋๋ RevealButtonStyle๊ณผ ๊ฐ์ด ํ๋์ ์ ๋๋ฉ์ด์ ๋ณด๋ค ํจ์ฌ ๋ ํฌ๊ฒ ๋ค๋ฆ ๋๋ค.
ExpandTransition ๋ฐ CollapseTransition์ ํฌํจํ์ฌ ์ปจํธ๋กค์ ์์ฑ์ ์ํด ์ค์ ๋ ๋ฐฉํฅ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ๋ฐ์๋ ๊ฐ๊ฐ์ ๋ํด ์ ํ์ ์ค์ ํ ์ ์์ต๋๋ค.
์ด ์์ด๋์ด๊ฐ ์ ๋ง ๋ง์์ ๋ญ๋๋ค!
๋๋ ๊ทธ ์์ด๋์ด๊ฐ ๋ง์์ ๋ค์ง๋ง, ํ์ฌ ์ฌ์ฉ์ ์ ์ ๊ธฐ๋ฅ์ ์ ํํ๋ ์ฌ์ฉ์ ์ ์ ํ ๋ง ์ ํ์ ์์ฑํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด๋ ๊ฒํ๋ฉด ์ ๊ฑฐํ์ฌ ์ฝ๊ฒ ๋นํ์ฑํ ํ ์ ์์ต๋๋ค.
์ ๋ ๊ทธ๊ฒ ๊ฑฑ์ ์ ๋๋ค. ์ฌ์ฉ์ ์ ์ ํ ๋ง ์ ํ ์์ด ExpandTransition ๋ฐ CollapseTransition API๋ฅผ ์ฌ์ฉํ๋ฉด "ExpendTransitionEnabled" ๋ฐ "CollapseTransitionEnabled"๋ง ์๋ ๊ฒ๊ณผ ๋น์ทํฉ๋๋ค.
@robloo WinUI 3 ๊ฐ๋ฐ๊ณผ ๊ด๋ จ๋ ๋ถ๋ง ์ฌํญ์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์ถ๋ค๋ฉด ์ ์๊ฒ ํธ์ง๋ฅผ ๋ณด๋ด์ฃผ์ธ์(์ Twitter์ ์ง์ฅ ์ด๋ฉ์ผ์ ์ GitHub ํ๋กํ์ ์์ต๋๋ค). ๊ทํ์ ํ์ฌ ๋ถ๋ง ์ฌํญ์ ๋ํด ์์ ํ ์๊ณ ์์ง๋ ์์ง๋ง, ์ ๋ ์ผ๋ฐ์ ์ผ๋ก ๊ณ ๊ฐ ๋๋ ์ปค๋ฎค๋ํฐ ์ฐธ์ฌ/๊ฐ๋ฐ๊ณผ ๊ด๋ จ๋ ์ฃผ์ ์ ๋ํด ์์ํ๊ธฐ์ ์ข์ ์ฌ๋์ผ ๋ฟ๋ง ์๋๋ผ ์ง๋ 1๋ ๋์ ์๋นํ ์์ ํฌ์ปค์ค ๊ทธ๋ฃน์ ์ด์ํ์ต๋๋ค. ๋๊ตฌ, ๊ธฐ๋ฅ ํจ๋ฆฌํฐ ๋ฑ์ ๋ํด ๋์ดํ ๊ณ ๋ ค ์ฌํญ์ ๋ค๋ค์ต๋๋ค.
๋ก๋๋งต์ด ๋งค์ฐ ๋นก๋นกํ๊ธฐ ๋๋ฌธ์ ์ํ๋ ๋ณ๊ฒฝ์ ํ ์ ์๋ค๊ณ ์ฅ๋ดํ ์๋ ์์ง๋ง, ๊ณ ๊ฐ ๋ฐ/๋๋ WinUI ๊ธฐ์ฌ์์ด๋ฏ๋ก ์ต์ ์ ๊ฒฝ์ฐ ๊ฒฐ๊ณผ๋ ์ต์ํ ๊ทํ์ ์๊ตฌ ์ฌํญ์ด ์์ผ๋ก ๋์๊ฐ๋ ์ฐ๋ฆฌ ํ์์ ์ถฉ๋ถํ ๊ณ ๋ ค๋๋ค๋ ๊ฒ์ ๋๋ค. ๊ฐ์ฅ ์ข์ ๊ฒฝ์ฐ๋ ๋น์ ์ด ์ฐพ๊ณ ์๋ ๊ฒ์ ๋ฌ๋ ค ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ฑํ ํ์? ๐
@mdtauk ์ค๋ช ์ ๋์ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ํญ์ ์ ์ง๋ด๊ณ ์์ต๋๋ค! ์ฐ๋ฆฌ ํ์๋ ๋ถ๋ช ํ ๋ง์ ๊ฒ์ด ์์ผ๋ฉฐ ํ์ ๋ชจ๋ ์์ญ์์ ๊ฐ์ฅ ์๋ฏธ ์๊ณ ์ํฅ๋ ฅ ์๋ ์ง์ ์ ์ ๊ณตํ๊ธฐ ์ํด ๊ฐ๋ฅํ ํ ์ผ์๊ณ ํจ๊ณผ์ ์ธ ๋ฐ ์ ๋ ํ๊ณ ์์ต๋๋ค. ๊ณ์ ์งํ๋๋ ๋ค๋ฅธ ๋ชจ๋ ์์ญ ์ค์์ ์๋ก์ด ์ ์ด/๊ธฐ๋ฅ์ ๊ณ์ ํฌ์ํ๋ ค๋ฉด @kat-y์ ๊ฐ์ ํ์์ด _๋งค์ฐ_ ๋ ์นด๋ก์ด ์๊ตฌ ์ฌํญ ์ฌ์์ ๊ฐ๋ฐํด์ผ ํฉ๋๋ค. ๊ฐ๋ฐ ์ด๊ธฐ ๋น์ฉ๋ฟ๋ง ์๋๋ผ ์ ์ง ๊ด๋ฆฌ ๋น์ฉ์ด ๊ณ์ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ์ค์ ๋ก ๋๋ฆฌ ์ฌ์ฉ๋์ง ์๋ API์ ๋๋ค. ๋ฐฉ๊ธ ์ด ์ค๋ ๋๋ฅผ ๊ฐ๋จํ ๊ตฌ๋ฌธ ๋ถ์ํ์ง๋ง @kat-y, ํนํ ์ ํ ๊ตฌ์ฑ์์ผ๋ก์ ์์ฒญ๋ ๊ธฐ๋ฅ์ด ํ์ํ ์ค์ ์ฑ์ ์ค์ ์๋๋ฆฌ์ค๊ฐ ์๋์ง ํ์ธํ๋ ๋ฐ ์๋ฒฝํ๊ฒ ๋ช ํํ๊ธฐ๋ฅผ ์ํ๋ ๊ฒ์ด ์ณ์ต๋๋ค( ๋ช ์๋ ์ด์ ์ ๊ฐ๋ฐ๋ ๋ชจ๋ ๊ธฐ๋ฅ์ด ์ฃ์ง ์ผ์ด์ค ์ ์ฉ ๋ฒ์๋ฅผ ์ ๊ณตํ๋ ํ๋ก๋์ ํ๊ฒฝ์์ ์๊ตฌ๋๋ ๋๋ก ์ํ๋๋๋ก ๋์ธ ์ ์๋ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ ๊ฒ์ฆ ํํธ๋๊ฐ ์๋์ง ํ์ธํ๊ธฐ ์ํด์์ ๋๋ค. ์ด๋ฌํ ์ด๋ง์ ์ค์๋ ๊ฒ์ฆ ํํธ๋๊ฐ ๋น๊ณต๊ฐ์ธ ๊ฒฝ์ฐ์ ๊ฐ์ด ๊ณต๊ฐ์ ์ผ๋ก ๋ฐฉ์ก๋์ง ์์ ์ ์์ต๋๋ค(์ฌ๊ธฐ์ ๊ณต๊ฐ์ ์ผ๋ก ๊ฒ์ํ๊ธฐ์ ์ ํฉํ์ง ์์ ์๊ตฌ์ฌํญ์ด ์๋ ๊ฒฝ์ฐ @kat-y์ ์ง์ ์ฐ๋ฝํ ์ ์์ต๋๋ค. ํ์ฌ) ๊ทธ๋ฌ๋ ์ด๊ฒ์ ๋ชจ๋ WinUI 2+ ์ปจํธ๋กค ๋ฆด๋ฆฌ์ค์์ ์ ๋ก์์ต๋๋ค.
๋์์ด ๋์๋์? ์ด ์ค๋ ๋๋ฅผ @kat-y ๋ฐ ํ์ฌ์ Expander ์ฃผ์ ๋ก ๋ค์ ๋๊ธฐ๋ ๊ฒ์ด ์ ๋ชฉํ์ ๋๋ค. ํ์ง๋ง ๋ต๋ณํ ์ ์๋ ๋ด์ฉ์ด ๋ ์๊ฑฐ๋ ๊ณ ๋ คํ๊ณ ์ถ์ ํผ๋๋ฐฑ์ด ์์ผ๋ฉด ์ง์ ์ฐ๋ฝํด ์ฃผ์ธ์. ์ด ์ค๋ ๋์ WinUI์ ์์ ๋ชจ๋ ์์ , ์ด์ ๋ฐ ์๋์ง์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค! ๐
@mdtauk ์ธ์ ๋์ฒ๋ผ ์ข์ ์ง์ ์ ๋๋ค. ๊ทธ๋ฌ๋ ์ด๊ฒ์ด ์ง์ ์ผ๋ก Microsoft๊ฐ ์ทจํ๊ณ ์๋ ์ ๊ทผ ๋ฐฉ์์ด๋ผ๋ฉด ์ด ์ฒ ํ์ ํ ๊ฐ์ง ์ค์ํ ์ ์์ ๋์ํ์ง ์์ ์ ์์ต๋๋ค.
๋๋ ์ ๊ทผ ๋ฐฉ์์ ๋์ํ๋์ง ์ฌ๋ถ์ ๋ํด ์ธ๊ธํ์ง ์์์ผ๋ฉฐ, ์ฌ๊ธฐ์์ ๋ด๊ฐ ๋ ํฌ๋ฅผ ํ๊ฐํ๋ ๋ฐฉ๋ฒ์ ์ง์ผ๋ณด๋ฉด์ ํ์ด ์ด ์์ ์ ํ๊ณ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
(๋ช ์๋ ์ด์ ์ ๊ฐ๋ฐ๋ ๋ชจ๋ ๊ธฐ๋ฅ์ด ์์ง ์ผ์ด์ค ์ ์ฉ ๋ฒ์๋ฅผ ์ ๊ณตํ๋ ํ๋ก๋์ ํ๊ฒฝ์์ ํ์์ ๋ฐ๋ผ ์ํ๋๋๋ก ๋์ธ ์ ์๋ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ ๊ฒ์ฆ ํํธ๋๊ฐ ์๋์ง ํ์ธํ๊ธฐ ์ํจ์ ๋๋ค.) ์ด๋ฌํ ์ด๋ง์ ์ค์๋ ๊ฒ์ฆ ํํธ๋๊ฐ ๋น๊ณต๊ฐ์ธ ๊ฒฝ์ฐ์ ๊ฐ์ด ๊ณต๊ฐ์ ์ผ๋ก ๋ฐฉ์ก๋์ง ์์ ์ ์์ต๋๋ค(์ฌ๊ธฐ์ ๊ณต๊ฐ์ ์ผ๋ก ๊ฒ์ํ๊ธฐ์ ์ ํฉํ์ง ์์ ์๊ตฌ์ฌํญ์ด ์๋ ๊ฒฝ์ฐ @kat-y์ ์ง์ ์ฐ๋ฝํ ์ ์์ต๋๋ค. ํ์ฌ) ๊ทธ๋ฌ๋ ์ด๊ฒ์ ๋ชจ๋ WinUI 2+ ์ปจํธ๋กค ๋ฆด๋ฆฌ์ค์์ ์ ๋ก์์ต๋๋ค.
Microsoft์ ์์ฒด ์ฑ๊ณผ Shell์ ์๋ก ์ฌ์ฉํ๋ฉด ์กด์ฌํ์ง ์๊ฑฐ๋ ๋ชฉ์ ์ ์ ํฉํ์ง ์์ ๋ด๋ถ ํ์๊ฐ ์๋ ๊ณณ์ ๋ณด์ฌ์ฃผ๊ธฐ ๋๋ฌธ์ ์ธ์์ ์ด๋์ด๋ผ ๊ฐ๋ฅ์ฑ์ด ๋ ๋๋ค๊ณ ์๊ฐํฉ๋๋ค. " ์์ ์ ๊ฒ์ ๋กค๋ฐฑํด์ผ ํฉ๋๋ค." - ๋ฌผ๋ก Windows์ฉ ์ฑ์ ๋น๋ํ๋ Netflix, Facebook ๋ฑ๊ณผ ๊ฐ์ ๊ฑฐ๋ ๊ธฐ์ ์ ์ปจํธ๋กค ๋ฐ ๊ธฐํ ๋นํธ๋ ์๊ตฌํ ๊ฒ์ ๋๋ค.
WinUI๋ WPF, MFC, CommonControls, WinForms ๋ฑ๊ณผ ๊ฐ์ ํจ๋ฆฌํฐ์ ๋๋ฌํ๋ ๊ฒ์ ๊ดํ ๊ฒ์ด ์๋๋๋ค. (๊ทธ๋ฌ๋ ํ๋์ ์ธ ๋ฑ๊ฐ๋ฌผ ์์ด ์ด๋ฌํ ๋ ๊ฑฐ์ ์ปจํธ๋กค์ ๋ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ง์งํ๊ฒ ๊ฒํ ํด์ผ ํจ)
Breadcrumb Bars ๋ฐ Expanders๊ฐ ์ ์๋๊ณ ์๋ค๋ ์ฌ์ค์ ์ด๊ฒ์ด IMO์์ ์ผ์ด๋๊ธฐ ์์ํ๋ค๋ ์ ํธ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฑ ๋์์ด๋๊ฐ ๋ชฉ์ ์ ๋ง๋์ง ํ์ธํ๊ธฐ ์ํด ํญ์ UI์ UX๋ฅผ ์ฌํ๊ฐํด์ผ ํ๋ ๊ฒ์ฒ๋ผ ๋ชจ๋ ์ปจํธ๋กค ๋๋ API ์ถ๊ฐ๋ ์ด์์ ์ธ ํ๊ฒฝ์์ ํ๊ฐ๋๊ณ "์ ๋นํ"๋์ด์ผ ํฉ๋๋ค. - ์ด ๊ฒฝ์ฐ์๋ ๋ช ๋ฐฑํด ๋ณด์ผ ์ ์์ง๋ง ํฌํจ ์ฌ๋ก๋ฅผ ๊ฐํํ๊ธฐ ์ํด ์ด ํจํด๊ณผ ์ด๋ฌํ API๊ฐ ์ฌ์ฉ๋๋ ์๋ฅผ ๊ณ์ ์ ์ํด์ผ ํฉ๋๋ค.
์ ๋๋ฉ์ด์
์ ๋ณด: ItemsRepeater๊ฐ ์ ๊ณตํ๋ ๊ฒ๊ณผ ๊ฐ์ ElementAnimator ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ๋ ๊ฒ์ ์ด๋ป์ต๋๊น? StartShowAnimation()
๋ฐ StartHideAnimation()
๊ฐ ์๋ ElementAnimator API๋ ์ ๋งํด ๋ณด์
๋๋ค(ํ์ฅ์๋ "ํ์", ์ถ์์๋ "์จ๊ธฐ๊ธฐ" ์ฌ์ฉ). ๊ธฐ๋ณธ ์ ๋๋ฉ์ด์
๊ตฌํ์ ์ฌ์ฉํ์ฌ ์ปจํธ๋กค์ ElementAnimator ์์ฑ์ ์ ๊ณตํ ์ ์์ต๋๋ค. ์ ๋๋ฉ์ด์
์ด ํ์ํ์ง ์์ ๊ฒฝ์ฐ ์์ฑ์ null๋ก ์ค์ ํ๊ฑฐ๋ ๋ณด๋ค ์ธ๋ถํ๋ ์ ์ด๊ฐ ํ์ํ ๊ฒฝ์ฐ ElementAnimator์ ํ์ ๋๋ ์จ๊ธฐ๊ธฐ ์ ๋๋ฉ์ด์
๋ง ์ ๊ณตํ ์ ์์ต๋๋ค.
์ ๋ ElementAnimator API์ ์ต์ํ์ง ์์ผ๋ฉฐ https://github.com/microsoft/microsoft-ui-xaml/issues/166 ๋ฌธ์ ๊ฐ ์กด์ฌํ๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ์๋๋ฆฌ์ค์์ ์์ง ์ฌ์ฉํ ์ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฌ์ ํ ๊ธฐ๋ฅ์ ๊ฒฉ์ฐจ๊ฐ ์๋ ๊ฒฝ์ฐ ์ด๋ฌํ ์์ ํญ๋ชฉ(Expander ์ปจํธ๋กค ๋ฐ ElementAnimator๊ฐ Expander ์ปจํธ๋กค์์ ์ฌ์ฉํ ์ ์๋๋ก ์๋)์ ๋๊ธฐํํ๊ณ ํจ๊ป ์์ง๋์ด๋งํ ์ ์์ต๋๋ค.
ํ ElementAnimator ์์ด๋์ด๋ ์ ๋ง ํฅ๋ฏธ๋กญ์ต๋๋ค. ์ฌ๊ธฐ์ ์ ๊ฑฑ์ ์ ์ด๊ฒ์ด ๋๋ฌด ๋ณต์กํ๊ฑฐ๋ ๊ณผ๋ํ๊ฒ ์์ง๋์ด๋ง๋ ๊ฒ์ผ ์ ์๋ค๋ ๊ฒ์ ๋๋ค. ๊ฒฐ๊ตญ ExpanderControl์ ๊ฒฝ์ฐ ์ฌ์ฉ์ ์ง์ ElementAnimator๋ฅผ ์ ๊ณตํด์ผ ํ์ง๋ง ๊ทธ๋ ์ง ์์ผ๋ฉด ๊ธฐ์กด ํ ๋ง ์ ๋๋ฉ์ด์ ์ ์ฌ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ํ ElementAnimator๋ ํ์ฅ๊ธฐ ์ปจํธ๋กค์ด ์ค์ ๋ก ํ์๋ก ํ๋ ๊ฒ๋ณด๋ค ๋ ๋ง์ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ฏ๋ก ๋ค์ ์ด์ํ ๊ฒ์ฒ๋ผ ๋ณด์ ๋๋ค.
ElementAnimator๊ฐ ํ๋ฉด์ ๋ํ๋๋ ์์ ๋๋ ํฌํจ๋ ์์์ ์คํ์ ์ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๋ ๊ฒ์ด ๋ง์ต๋๊น?
ํ์ฅ๊ธฐ๋ก ํ์๋๋ ํจ๋ ๋ด์ ๋ฌด์์ด ์๋์ง์ ๋ฐ๋ผ ๊ณผ๋ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ป๊ฒ๋ ์ฐ๊ฒฐํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์๋ค๋ฉด ์์๋ฅผ ํฌํจํ๋ ํ์ฅ ํจ๋์ด ์์์ ๋ฌด์ธ๊ฐ๋ฅผ ์ถ๊ฐํ๋ ๊ฒฝ์ฐ ํ์ ์ ๋๋ฉ์ด์ ์ ๊ตฌ๋ํ ์ ์์ต๋๋ค.
๋ฐ๋ผ์ Expander๋ ์์ ์์ ์ ํ์ ์ง์ ์ ์ดํ์ง ์์ง๋ง ๊ฐ๋ฐ์๊ฐ ์ํ๋ ๊ฒฝ์ฐ ํ์ฑํํ ์ ์์ต๋๋ค.
์, ์ฌ๊ธฐ์์ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์ ๋๋ฉ์ด์ ์ ๋ง๋ค ์ ์๊ณ ๊ณ ๊ฐ์๊ฒ ๋ง์กฑ์ค๋ฌ์ด ์์ค์ ์ฌ์ฉ์ ์ง์ ์ต์ ์ ์ ๊ณตํ ์ ์๋ค๋ฉด ํ์ํ ๊ฐ์น๊ฐ ์์ ๊ฒ์ ๋๋ค. ์๋ฅผ ๋ค์ด ํญ๋ชฉ์ด ํ์ฅ/์ถ์๋ ๋ TreeView ์ปจํธ๋กค์ ์ ๋๋ฉ์ด์ ์ ์ถ๊ฐํ๋ผ๋ ์์ฒญ์ ์ด๋ฏธ ๋ณด์์ต๋๋ค(https://github.com/microsoft/microsoft-ui-xaml/issues/208). Expander์ TreeView ์ปจํธ๋กค ๋ชจ๋์ ๋ํด ๋ฉ์ง๊ฒ ๋ณด์ด๋๋ก ํ ์ธํธ์ ์ ๋๋ฉ์ด์ ์ ๋น๋ํ ์ ์๋ ๊ฒฝ์ฐ๊ฐ ์ฌ๊ธฐ์์ ๋ง๋ค์ด์ง ์ ์๋ค๊ณ ์์ํฉ๋๋ค. ๋ค๋ฅธ ์ปจํธ๋กค ๊ฐ์ ์ผ๊ด์ฑ ์์ค์ด ์๋์ผ๋ก ์ ๊ณต๋ฉ๋๋ค. ์ฌ์ฉ์์๊ฒ ์๊ฐ์ ์น์ํจ์ ๋ง๋๋ ๊ฒ๋ ๋งค๋ ฅ์ ์ธ ์ฃผ์ฅ์ ๋๋ค.
์ด์์ ์ผ๋ก๋ TreeView์ ๊ณ์ธต์ NavigationView๊ฐ ์ปจํธ๋กค์ด ์ค๋น๋๋ฉด Expander ์ปจํธ๋กค๋ก ์ ํ๋์ด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ฒฐ๊ตญ, ํ์ฌ ๋ ์ปจํธ๋กค์ ExpanderControl๋ก ํด๊ฒฐ๋๋ ๋๊ฐ์ ๋ฌธ์ ๋ฅผ ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค. ๋ฐ๋ผ์ ๊ณต์ ์ ๋๋ฉ์ด์ ์ TreeView์ ํฐ ์ฐจ์ด๋ฅผ ๋ง๋ค์ง ์์ต๋๋ค.
ElementAnimator์ ๋ฌธ์ (๋ด๊ฐ ์ดํดํ ๋ฐฉ๋ฒ)๋ ์ ์ ๋๋ฉ์ด์ ์ ์์ฑํด์ผ ํ๋ค๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ Expander์ ํ์ฉํ ์ ์๋ ์ ๋๋ฉ์ด์ ์ด ์ด๋ฏธ ๋ด์ฅ๋์ด ์์ต๋๋ค.
ํ์ฅ๊ธฐ๋ก ํ์๋๋ ํจ๋ ๋ด์ ๋ฌด์์ด ์๋์ง์ ๋ฐ๋ผ ๊ณผ๋ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ป๊ฒ๋ ์ฐ๊ฒฐํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์๋ค๋ฉด ์์๋ฅผ ํฌํจํ๋ ํ์ฅ ํจ๋์ด ์์์ ๋ฌด์ธ๊ฐ๋ฅผ ์ถ๊ฐํ๋ ๊ฒฝ์ฐ ํ์ ์ ๋๋ฉ์ด์ ์ ๊ตฌ๋ํ ์ ์์ต๋๋ค.
ElementAnimator์ ์ฃผ์ ํฌ์ธํธ ์ค ํ๋๋ ํจ๋๊ณผ ์ปฌ๋ ์ (์: ItemsRepeater)์ ์ ๋๋ฉ์ด์ ์ ์ถ๊ฐํ ์ ์๋ค๋ ๊ฒ์ด์์ต๋๋ค. Expander์ ๊ฒฝ์ฐ ์ค์ ๋ก๋ ๊ทธ๋ ์ง ์์ง๋ง expander๋ ํญ๋ชฉ ๋ชจ์์ ๋ ๋๋งํ๋ ํจ๋์ด ์๋๋๋ค.
๋ด ๋จธ๋ฆฌ ๊ผญ๋๊ธฐ์์ ์ฌ์ ๊ฐ์๋ ์์ ํจ๋์ ํฌ๊ธฐ ์กฐ์ . ๊ทธ๋ฌ๋ฉด ํฌํจํ๋ ๊ฐ์ฒด์ ๋ํ ์ฌ๋ผ์ด๋ ๋ฐ ํ์ด๋๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ๋๊ปด์ง ๊ฒ์ ๋๋ค.
Fluent Design ๋ชจ์ ํ์์ ๊ฒฐ์ ํ ์ ์ ํ ์ํ๋ก ์ผ๋ฐํ๋ OS ์ ์ฒด ์ ํ์ด ๋๋ค๋ฉด ์ข์ ๊ฒ์ ๋๋ค.
์ ๋๋ฉ์ด์ ์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์์ผ๋ฏ๋ก @stmoy์ ํ๊ทธ๋ฅผ ์ง์ ํฉ๋๋ค.
์ฐธ์ฌํ๊ณ ์ฐ๋ฆฌ ํ์ ์ฝ์์ ๋ํด ๋ ๋ง์ ์ปจํ ์คํธ๋ฅผ ์ ๊ณตํ @SavoySchuler ์๊ฒ ๊ฐ์ฌํฉ๋๋ค. ์ด๊ฒ์ด ๋ด๊ฐ ์ ExpandDirection์ ๊ธฐ๋ฅ์ด ํ์ํ ์ฑ์ ์๋ฅผ ํน๋ณํ ์ฐพ๊ณ ์๋์ง ์ค๋ช ํ๋ ๋ฐ ๋์์ด ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค! ์ฌ๋ณด์ด์ ๋ง์ ๋ํ์ดํ๋ ค๋ฉด ์ฌ๊ธฐ์์ ๊ณต์ ํ ์ ์๋ ํ์ฅ ํ๋ก๊ทธ๋จ์ด ํ์ํ ๊ฒฝ์ฐ ์ ์๊ฒ ์ง์ ์ฐ๋ฝํ์ธ์(ํ๋ผ์ด๋ฒ์๊ฐ ํ์ํ ๊ฒฝ์ฐ ํธ์ํฐ DM).
@robloo ์ฌ๊ณผ
๊ทธ๋ฐ ์ ์์ ์ ๋ ์ ๋๋ฉ์ด์ ์ ๋ํ ์ต์ ๋๊ธ์ ์ฝ๊ฒ ๋์ด ๊ธฐ์ฉ๋๋ค!
์ ๋๋ฉ์ด์ ๊ด๋ จ ๋๊ธ์ ์ฝ์ด๋ณด๋ ์์ ๋์ด ๋์ด๋๋ ์์๋๋ก 3๊ฐ์ง ๊ฒฝ๋ก๊ฐ ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ธํธ ์ ๋๋ฉ์ด์ ์ ํฌํจํ์ง ์์ - ์๋๋ฆฌ์ค๊ฐ ์๋ํ์ง ์๊ฑฐ๋ ์ธํธ ์ ๋๋ฉ์ด์ ์ด ์ข์ ๋ณด์ผ ๋ @chingucoding ์ด ๊ฐ๋ฐ์๋ฅผ
@mdtauk ๋ ExpandTransition ๋ฐ CollapseTransition์ ํฌํจํ์ฌ ์ ์ํ์ต๋๋ค
์ปจํธ๋กค์ ์์ฑ์ ์ํด ์ค์ ๋ ๋ฐฉํฅ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ๋ฐ์๊ฐ ๊ฐ๊ฐ์ ๋ํ ์ ํ์ ์ค์ ํ ์ ์์ต๋๋ค.
ElementAnimator๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค ์์ ๋ฒ์์ฒ๋ผ ๋ค๋ฆฝ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๊ฐ๋ฐ์๊ฐ ์ ํ์ ์ค์ ํ ๋ ์์ ํ ์ ์ฐ์ฑ์ ์ป์ ์ ์์ต๋๊น?
๋ด ๋จธ๋ฆฌ ๊ผญ๋๊ธฐ์์ ์ฌ์ ๊ฐ์๋ ์์ ํจ๋์ ํฌ๊ธฐ ์กฐ์ . ๊ทธ๋ฌ๋ฉด ํฌํจํ๋ ๊ฐ์ฒด์ ๋ํ ์ฌ๋ผ์ด๋ ๋ฐ ํ์ด๋๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ๋๊ปด์ง ๊ฒ์ ๋๋ค.
๋๋ ์ด๊ฒ์ ์ผ๋ถ๋ฅผ ์ดํดํ์ง๋ง ์๊ฐ์ ๐ ์์ด๋ ์๊ฐํํ๊ธฐ๊ฐ ์ด๋ ต์ต๋๋ค. "์์ ํจ๋์ ํฌ๊ธฐ ์กฐ์ "์ ํค๋์ ํฌ๊ธฐ๊ฐ ๋ณ๊ฒฝ๋จ์ ์๋ฏธํฉ๋๊น? "ํฌํจํ๋ ๊ฐ์ฒด์ ์ฌ๋ผ์ด๋ ๋ฐ ํ์ด๋"๊ฐ ๋ฌด์์ ์๋ฏธํ๋์ง ์์ธํ ์ค๋ช ํด ์ฃผ์๊ฒ ์ต๋๊น?
@Felix-Dev๋ ElementAnimator๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ํ์ต๋๋ค.
StartShowAnimation() ๋ฐ StartHideAnimation()์ด ์๋ ElementAnimator API๋ ์ ๋งํด ๋ณด์ ๋๋ค("ํ์"๋ ํ์ฅ์ ์ฌ์ฉ, "์จ๊น"์ ์ถ์์ ์ฌ์ฉ). ๊ธฐ๋ณธ ์ ๋๋ฉ์ด์ ๊ตฌํ์ ์ฌ์ฉํ์ฌ ์ปจํธ๋กค์ ElementAnimator ์์ฑ์ ์ ๊ณตํ ์ ์์ต๋๋ค. ์ ๋๋ฉ์ด์ ์ด ํ์ํ์ง ์์ ๊ฒฝ์ฐ ์์ฑ์ null๋ก ์ค์ ํ๊ฑฐ๋ ๋ณด๋ค ์ธ๋ถํ๋ ์ ์ด๊ฐ ํ์ํ ๊ฒฝ์ฐ ElementAnimator์ ํ์ ๋๋ ์จ๊ธฐ๊ธฐ ์ ๋๋ฉ์ด์ ๋ง ์ ๊ณตํ ์ ์์ต๋๋ค.
@chingucoding ์ ๋ค์๊ณผ ๊ฐ์ด ์ธ๊ธํ์ต๋๋ค.
๊ทธ๋ฐ ๋ค์ ๊ธฐ์กด ํ ๋ง ์ ๋๋ฉ์ด์ ์ ์ฌ์ฌ์ฉํ ์ ์๋ ๋์ ์ฌ์ฉ์ ์ง์ ElementAnimator๋ฅผ ์ ๊ณตํด์ผ ํฉ๋๋ค. ๋ํ ElementAnimator๋ ํ์ฅ๊ธฐ ์ปจํธ๋กค์ด ์ค์ ๋ก ํ์๋ก ํ๋ ๊ฒ๋ณด๋ค ๋ ๋ง์ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ฏ๋ก ๋ค์ ์ด์ํ ๊ฒ์ฒ๋ผ ๋ณด์ ๋๋ค.
ElementAnimator์ ์ฃผ์ ํฌ์ธํธ ์ค ํ๋๋ ํจ๋ ๋ฐ ์ปฌ๋ ์ (์: ItemsRepeater)์ ์ ๋๋ฉ์ด์ ์ ์ถ๊ฐํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค. Expander์ ๊ฒฝ์ฐ ์ค์ ๋ก๋ ๊ทธ๋ ์ง ์์ง๋ง expander๋ ํญ๋ชฉ ๋ชจ์์ ๋ ๋๋งํ๋ ํจ๋์ด ์๋๋๋ค.
TreeView ๋ฐ ๊ณ์ธต์ NavigationView๋ ์ปจํธ๋กค์ด ์ค๋น๋๋ฉด Expander ์ปจํธ๋กค๋ก ์ ํ๋์ด์ผ ํฉ๋๋ค. ๊ฒฐ๊ตญ, ํ์ฌ ๋ ์ปจํธ๋กค์ ExpanderControl๋ก ํด๊ฒฐ๋๋ ๋๊ฐ์ ๋ฌธ์ ๋ฅผ ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค. ๋ฐ๋ผ์ ๊ณต์ ์ ๋๋ฉ์ด์ ์ TreeView์ ํฐ ์ฐจ์ด๋ฅผ ๋ง๋ค์ง ์์ต๋๋ค.
TreeView์ ๊ณ์ธต์ NavigationView๊ฐ Expander์ ์ ํํ ๋์ผํ ์ ๋๋ฉ์ด์ ์๋๋ฆฌ์ค๋ฅผ ๊ฐ์ง๊ณ ์๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. Expander๊ฐ ๊ทผ์ฒ์ ์๋ ๋ชจ๋ ์ฝํ ์ธ (ํ ์คํธ/๋ฒํผ์ด ์๋ ์๋ ์์)๋ฅผ ํธ์ํ ๋์ Expander๊ฐ ์๋ก '์์ฝ๋์ธ'๋๋ ์๋๋ฆฌ์ค๋ ์ด๋ป์ต๋๊น? ์ ์ฌ์ ์ผ๋ก ์๋ก์ ํ์ฅ์ ๋ฐ๋ผ ๋ซ๊ฑฐ๋ ์ด ์ ์๋ ๋ ผ๋ฆฌ๊ฐ ์์ต๋๋ค.
ElementAnimator๊ฐ ํจ๋/์ปฌ๋ ์ ์ ๋๋ฉ์ด์ ์ฉ์ด๋ผ๋ ์ ์ ๊ฐ์ํ ๋ Expander ์ ๋๋ฉ์ด์ ์ ๊ณผ๋ํฉ๋๊น?
@mdtauk ๋ ExpandTransition ๋ฐ CollapseTransition์ ํฌํจํ์ฌ ์ ์ํ์ต๋๋ค
์ปจํธ๋กค์ ์์ฑ์ ์ํด ์ค์ ๋ ๋ฐฉํฅ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ๋ฐ์๊ฐ ๊ฐ๊ฐ์ ๋ํ ์ ํ์ ์ค์ ํ ์ ์์ต๋๋ค.
ElementAnimator๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค ์์ ๋ฒ์์ฒ๋ผ ๋ค๋ฆฝ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๊ฐ๋ฐ์๊ฐ ์ ํ์ ์ค์ ํ ๋ ์์ ํ ์ ์ฐ์ฑ์ ์ป์ ์ ์์ต๋๊น?
๋ด ๋จธ๋ฆฌ ๊ผญ๋๊ธฐ์์ ์ฌ์ ๊ฐ์๋ ์์ ํจ๋์ ํฌ๊ธฐ ์กฐ์ . ๊ทธ๋ฌ๋ฉด ํฌํจํ๋ ๊ฐ์ฒด์ ๋ํ ์ฌ๋ผ์ด๋ ๋ฐ ํ์ด๋๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ๋๊ปด์ง ๊ฒ์ ๋๋ค.
๋๋ ์ด๊ฒ์ ์ผ๋ถ๋ฅผ ์ดํดํ์ง๋ง ์๊ฐ์ ๐ ์์ด๋ ์๊ฐํํ๊ธฐ๊ฐ ์ด๋ ต์ต๋๋ค. "์์ ํจ๋์ ํฌ๊ธฐ ์กฐ์ "์ ํค๋์ ํฌ๊ธฐ๊ฐ ๋ณ๊ฒฝ๋จ์ ์๋ฏธํฉ๋๊น? "ํฌํจํ๋ ๊ฐ์ฒด์ ์ฌ๋ผ์ด๋ ๋ฐ ํ์ด๋"๊ฐ ๋ฌด์์ ์๋ฏธํ๋์ง ์์ธํ ์ค๋ช ํด ์ฃผ์๊ฒ ์ต๋๊น?
๋ฆ์ด์ ์ฃ์กํฉ๋๋ค. ์ด ์์ ๋ชฉ์
์ ๋๋ฉ์ด์
์ ๋ง๋ค์ด์ผ ํ์ต๋๋ค.
์ค์ ์ ๋๋ฉ์ด์
ํ์ด๋ฐ์ ๋ฌด์ํ์ญ์์ค. ๋จ์ง ์ค๋ช
์ ์ํ ๊ฒ์
๋๋ค. ๋ถํ์ ์ค๊ณฝ์ ์ ํ์ฅ๊ธฐ ํค๋์ด๊ณ ๋
น์ ํ
๋๋ฆฌ๋ ํ์ฅ๊ธฐ ์ฐฝ/์ฝํ
์ธ ๋ฑ์
๋๋ค.
TreeView์ ๊ณ์ธต์ NavigationView๊ฐ Expander์ ์ ํํ ๋์ผํ ์ ๋๋ฉ์ด์ ์๋๋ฆฌ์ค๋ฅผ ๊ฐ์ง๊ณ ์๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. Expander๊ฐ ๊ทผ์ฒ์ ์๋ ๋ชจ๋ ์ฝํ ์ธ (ํ ์คํธ/๋ฒํผ์ด ์๋ ์๋ ์์)๋ฅผ ํธ์ํ ๋์ Expander๊ฐ ์๋ก '์์ฝ๋์ธ'๋๋ ์๋๋ฆฌ์ค๋ ์ด๋ป์ต๋๊น? ์ ์ฌ์ ์ผ๋ก ์๋ก์ ํ์ฅ์ ๋ฐ๋ผ ๋ซ๊ฑฐ๋ ์ด ์ ์๋ ๋ ผ๋ฆฌ๊ฐ ์์ต๋๋ค.
๋ฌธ์ ๋ Expander๊ฐ ์ ๋๋ฉ์ด์ ์ ์ ์ฉํด์ผ ํฉ๋๊น? TreeView ๋ฐ Hierarchical NavigationView๋ ํ์ฅ/์ถ์๋ฅผ ์ฒ๋ฆฌํ๊ณ ํด๋น ์์ญ์์ ๋ณด๋ค ํตํฉ๋ ๊ฒฝํ์ ํ ์ ์๋๋ก ํ๋ ํ์ฅ๊ธฐ ์ปจํธ๋กค์ด ๋ด์ฅ๋์ด ์์ด ํ์คํ ์ด์ ์ด ์์ต๋๋ค. ์๋ฅผ ๋ค์ด TreeView๋ ์๋ฌด ๊ฒ๋ ์ ๋๋ฉ์ด์ ํ์ง ์๋ ๋ฐ๋ฉด ๊ณ์ธต์ NavigationView๋ ๊ฐ๋งค๊ธฐ ๋ชจ์์ ํ์ ์ ์ ๋๋ฉ์ด์ ์ ์ ์ฉํฉ๋๋ค.
ElementAnimator๊ฐ ํจ๋/์ปฌ๋ ์ ์ ๋๋ฉ์ด์ ์ฉ์ด๋ผ๋ ์ ์ ๊ฐ์ํ ๋ Expander ์ ๋๋ฉ์ด์ ์ ๊ณผ๋ํฉ๋๊น?
ElementAnimator(์ ์ด๋ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ์์๋)๋ฅผ ์ ๊ทน์ ์ผ๋ก ์ง์ํ๋ ์ปจํธ๋กค ์ค ํ๋๋ ์์ญ ๊ฐ์ ํญ๋ชฉ์ ๋ ๋๋งํ๋ ๋ํ ํจ๋์ ์ฒ๋ฆฌํ๋ ItemsRepeater์ผ ์ ์์ต๋๋ค. ๋ฐ๋ฉด Expander์๋ ๋ณต์กํ ์๋๋ฆฌ์ค๊ฐ ์๋๋ผ ํ๋์ ํญ๋ชฉ์ ํ์ํ๊ฑฐ๋ ์จ๊ธธ ์ ์์ต๋๋ค.
๋ด๊ฐ ์์์ฐจ๋ฆฐ ๋ค๋ฅธ ์ ์ ๊ฐ๋งค๊ธฐ ๋ชจ์์ด ๋ฐฐ์น๋ ์์น(์ผ์ชฝ/์ค๋ฅธ์ชฝ ๋๋ ์์ชฝ/์๋์ชฝ)๋ฅผ ์ฌ์ฉ์ ์ง์ ํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์๋ค๋ ๊ฒ์ ๋๋ค. ์๋ง๋ ์ด๊ฒ์ ์ฌ์ฉ์ ์ ์ ํฌ์ธํธ๋ก ์ ์ฉํ์ง ์์๊น์? NavigationView๋ ๊ฐ๋งค๊ธฐ ๋ชจ์์ ์ค๋ฅธ์ชฝ์ ๋ฐฐ์นํ๊ณ TreeView๋ ์ผ์ชฝ์ ๊ฐ๋งค๊ธฐ ๋ชจ์์ ๋ฐฐ์นํฉ๋๋ค. ์์คํ ์ ๊ธฐ์กด ํ์ฅ๊ธฐ์๋ ๋์ผํ๊ฒ ์ ์ฉ๋๋ฉฐ ์ค์ ์ฑ์ ์ผ๋ถ ์์ญ์์๋ ์ผ์ชฝ์ ๋ฐฐ์นํ๊ณ ์๋ฅผ ๋ค์ด ์๋ฆผ์ ์ค๋ฅธ์ชฝ์ ๋ฐฐ์นํฉ๋๋ค.
๋ด๊ฐ ์์์ฐจ๋ฆฐ ๋ค๋ฅธ ์ ์ ๊ฐ๋งค๊ธฐ ๋ชจ์์ด ๋ฐฐ์น๋ ์์น(์ผ์ชฝ/์ค๋ฅธ์ชฝ ๋๋ ์์ชฝ/์๋์ชฝ)๋ฅผ ์ฌ์ฉ์ ์ง์ ํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์๋ค๋ ๊ฒ์ ๋๋ค. ์๋ง๋ ์ด๊ฒ์ ์ฌ์ฉ์ ์ ์ ํฌ์ธํธ๋ก ์ ์ฉํ์ง ์์๊น์? NavigationView๋ ๊ฐ๋งค๊ธฐ ๋ชจ์์ ์ค๋ฅธ์ชฝ์ ๋ฐฐ์นํ๊ณ TreeView๋ ์ผ์ชฝ์ ๊ฐ๋งค๊ธฐ ๋ชจ์์ ๋ฐฐ์นํฉ๋๋ค. ์์คํ ์ ๊ธฐ์กด ํ์ฅ๊ธฐ์๋ ๋์ผํ๊ฒ ์ ์ฉ๋๋ฉฐ ์ค์ ์ฑ์ ์ผ๋ถ ์์ญ์์๋ ์ผ์ชฝ์ ๋ฐฐ์นํ๊ณ ์๋ฅผ ๋ค์ด ์๋ฆผ์ ์ค๋ฅธ์ชฝ์ ๋ฐฐ์นํฉ๋๋ค.
TopLeft, TopRight, BottomCentered(๋ฐ ๋ ๋ง์ (Left, Right, ...)) ๋ฐ ์ถ๊ฐ ExpandGlyphPlacementOffset
์์ฑ์ ์์ ํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ExpandGlyphPlacementMode
์ ๊ฐ์ ๊ฐ์ ๋์
ํ ์ ์์ต๋๋ค. ํ์ํ ๊ฒฝ์ฐ ๊ธฐ๋ณธ ์์น(๋ฐฐ์น ๋ชจ๋๋ก ์ค์ ).
๊ทธ ์ธ์๋ @mdtauk๊ฐ ์ด๋ฏธ ์์์ฐจ๋ฆฐ ๊ฒ์ฒ๋ผ ํ์ฅ/์ถ์ ๊ธ๋ฆฌํ๋ฅผ ์ฌ์ฉ์ ์ง์ ํ๋ API(์ผ๋ถ ์ปจํธ๋กค์ >
์ฌ์ฉ, ๋ค๋ฅธ ์ปจํธ๋กค์ ํ์ฅ ๊ธ๋ฆฌํ์ v
) ๋ฐ ๊ธ๋ฆฌํ.
TopLeft, TopRight, BottomCentered(๋ฐ ๋ ๋ง์ (Left, Right, ...)) ๊ฐ์ด ์๋ ExpandGlyphPlacementMode์ ํ์ํ ๊ฒฝ์ฐ ๊ฐ๋ฐ์๊ฐ ๊ธฐ๋ณธ ์์น(๋ฐฐ์น ๋ชจ๋๋ก ์ค์ )๋ฅผ ์์ ํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ์ถ๊ฐ ExpandGlyphPlacementOffset ์์ฑ์ ๋์ ํ ์ ์์ต๋๋ค. .
TopLeft, TopRight ... ์ฌ๊ธฐ์์ ์ฌ๋ฐ๋ฅธ ์ ํ์ธ์ง ํ์คํ์ง ์์ต๋๋ค. "์์" ๋ฐ "๋"๊ณผ ๊ฐ์ ๊ฒ์ด ์ฌ๊ธฐ์ ๋ ์ ํฉํ ์ ์์ต๋๊น?
๊ฐ๋ก ๋ ์ด์์์์ ์์์ ์ผ์ชฝ(RTL ์ธ์ด์ ๊ฒฝ์ฐ ์ค๋ฅธ์ชฝ)์ ์๊ณ ์ธ๋ก ์ด๊ธฐ ๋ชจ๋์์๋ ์์ชฝ์ด ๋ฉ๋๋ค. "๋"์ ๊ทธ์ ๋ฐ๋ผ ์ ์๋ ์ ์์ต๋๋ค. TopLeft์์ ๋ณผ ์ ์๋ ๋ฌธ์ ๋ ... ์ด์ ์ ๊ฑฐ์ ์์ง๋ง ๋ณต์ก์ฑ์ด ๋ง์ด ๋ฐ์ํ๋ค๋ ๊ฒ์
๋๋ค(TeachingTip ์ฐธ์กฐ). ExpanderControl์ด ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋ฆฌ๋ฉด TopLeft์ TopRight๊ฐ ๋์ผํฉ๋๋ค. ํ๋จ ์ค์๊ณผ ๊ฐ์ ๊ฒ์ด ๋ง์ ๊ณต๊ฐ์์ ๋ค์ ์ด์ํด ๋ณด์ด๊ณ ๋ง์ ๊ณต๊ฐ์ ์ฐจ์งํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๊ทธ ์ธ์๋ @ mdtauk(๋ฐ์ ํธ์งํจ์ ์คํธํ์ง ์๊ธฐ ์ํด ์ธ๊ธ ๋๋๊ธฐ)์์ ์ด๋ฏธ ํ์ธํ๋ฏ์ด ํ์ฅ/์ถ์ ๊ธ๋ฆฌํ๋ฅผ ์ฌ์ฉ์ ์ง์ ํ๋ API(์ผ๋ถ ์ปจํธ๋กค์ >๋ฅผ ์ฌ์ฉํ๊ณ ๋ค๋ฅธ ์ปจํธ๋กค์ ํ์ฅ ๊ธ๋ฆฌํ์ v๋ฅผ ์ฌ์ฉ) ๊ธ๋ฆฌํ.
๋ฌธ์ ๋ ์ด๊ฒ์ ๋ฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ๊ณ์ธต์ NavigationView๊ฐ ์ํํ๋ ๊ฒ๊ณผ ์ ์ฌํ๊ฒ ์์ด์ฝ์ ์ ๋๋ฉ์ด์ ์ ์ ์ฉํ๋ ค๋ ๊ฒฝ์ฐ ์ ํ ๊ฒฝ์ฐ v ๋๋ >๋ก ์ ํํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ํ์ฅ ๋ฐ ์ถ์ ๊ธ๋ฆฌํ๋ฅผ ๊ต์ฒดํ๋ API๋ฅผ ํ์ฉํ ์ ์์ต๋๋ค. ์ ํ ๊ธ๋ฆฌํ ๋ฐฉํฅ์ ๋ํ๋ด๋ API๋ฅผ ๊ฐ์ง ์ ์์๊น์?
์ ๋๋ฉ์ด์ ์ ๋ํ ์์ด๋์ด๋ ๊ฝค ์ข์ ๊ฒ ๊ฐ์ต๋๋ค. List View์ ๋ง์ฐฌ๊ฐ์ง๋ก on/off๊ฐ ๊ฐ๋ฅํด์ผ ํฉ๋๋ค. ํค๋์ ๊ธ๋ฆฌํ๋ RTL ์ธ์ด์ ์ธก๋ฉด์ ์๋์ผ๋ก ์ ํํด์ผ ํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋ชจ๋ ๊ธ๋ฆฌํ ์ฌ์ฉ์ ์ ์๋ ๋ฌธ์ ๋ฅผ ๊ณผ๋ํ๊ฒ ์์ง๋์ด๋งํ๋ ๊ฒ์ผ๋ก ๋ณด์ ๋๋ค. ์ฌ์ฉ์ ์ ์ ๊ตฌํ์ด ์๋ ์๋ณ๋ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ํ๋ ์คํ์ผ์ ๋ง๋๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํฉ๋๋ค. ๋์ CheckBox ๋ฐ ๊ธฐํ ์ปจํธ๋กค๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๊ธฐ๋ณธ ๋์์ธ์ด ์ฐ๋ฆฌ๊ฐ ํ ์ ์๋ ์ต์ ์ด์ด์ผ ํ์ง๋ง ๊ธฐ๋ณธ ์คํ์ผ์ ๋ค์ ํ ํ๋ฆฟ์ ์์ฑํ ์ ์์ ๋งํผ ๋จ์ํด์ผ ํฉ๋๋ค. ๋๋ ์ ๋ชจ๋ ์ฌ๋๋ค์ด ์ปจํธ๋กค์ ๋ค์ ํ ํ๋ฆฟํํ๋ ๋ฐ ๊ทธ๋ ๊ฒ ๋ถ์ ์ ์ธ์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๊ทธ๊ฒ์ด ํด๊ฒฐ์ฑ ์ด๋ฉฐ ์ค์ ๋ก๋ ์ปจํธ๋กค์ด ๋ ๋ณด์ด๋ ํฐ ์ฅ์ ์ ๋๋ค. ๋ ๋ง์ ์์ฑ์ ์ถ๊ฐํ๋ฉด ๋ด๊ฐ ๋ง์ด ๋ฃ๋ ์ ์ง ๊ด๋ฆฌ ๋ถ๋ด๋ ์ฆ๊ฐํฉ๋๋ค.
ํธ์ง: ๊ฐ๋ฒผ์ด ์คํ์ผ์ ๊ฐ์ ํ๊ธฐ ์ํด ๋ช ๊ฐ์ง์ ๋ํ ๋ฆฌ์์ค๋ฅผ ์ ์ํ๋ ๊ฒ๋ ํฉ๋ฆฌ์ ์ธ ์ต์ ์ผ ์ ์์ต๋๋ค.
TopLeft, TopRight ... ์ฌ๊ธฐ์์ ์ฌ๋ฐ๋ฅธ ์ ํ์ธ์ง ํ์คํ์ง ์์ต๋๋ค. "์์" ๋ฐ "๋"๊ณผ ๊ฐ์ ๊ฒ์ด ์ฌ๊ธฐ์ ๋ ์ ํฉํ ์ ์์ต๋๊น?
๊ฐ๋ก ๋ ์ด์์์์ ์์์ ์ผ์ชฝ(RTL ์ธ์ด์ ๊ฒฝ์ฐ ์ค๋ฅธ์ชฝ)์ ์๊ณ ์ธ๋ก ์ด๊ธฐ ๋ชจ๋์์๋ ์์ชฝ์ด ๋ฉ๋๋ค. "๋"์ ๊ทธ์ ๋ฐ๋ผ ์ ์๋ ์ ์์ต๋๋ค. TopLeft์์ ๋ณผ ์ ์๋ ๋ฌธ์ ๋ ... ์ด์ ์ ๊ฑฐ์ ์์ง๋ง ๋ณต์ก์ฑ์ด ๋ง์ด ๋ฐ์ํ๋ค๋ ๊ฒ์ ๋๋ค(TeachingTip ์ฐธ์กฐ).
@chingucoding NavigationView๋ ์ธ๋ก ์ด๊ธฐ ๋ชจ๋๋ฅผ ์ฌ์ฉํฉ๋๋ค(NavigationViewItem์ด ์ธ๋ก๋ก ํ์ฅ๋๊ธฐ ๋๋ฌธ์), ๋ง์ฃ ? ๊ทธ๋ฌ๋ฉด ํค๋์ ์ผ์ชฝ์ด๋ ์ค๋ฅธ์ชฝ์ ๊ธ๋ฆฌํ๋ฅผ ์ด๋ป๊ฒ ์ค์ ํ ์ ์์ต๋๊น? "์์"์ด ๋งจ ์์ ์๊ณ "๋"์ด ์๋ง๋ ํค๋์ ๋งจ ์๋์ ์์ ๊ฒ์ด๋ผ๊ณ ๊ทํ์ ์๊ฒฌ์ ์ฝ๊ณ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ธ๋ฆฌํ๋ฅผ ์ผ์ชฝ ์๋จ ๋ชจ์๋ฆฌ ๋๋ ์ค๋ฅธ์ชฝ ์๋จ ๋ชจ์๋ฆฌ์ ๋ฐฐ์นํ ์ ์๋์ง ์ฌ๋ถ๋ฅผ ์ง์ ํ๋ ๋ฐฉ๋ฒ์ด ํ์๋์ง ์์ต๋๋ค. ์ฐ๋ฆฌ๊ฐ ํํ ๋ณผ ์ ์๋ ExpandGlyphPlacementOffset
์ ๊ฐ์ API๋ฅผ ์ฌ์ฉํ ํ์๊ฐ ์์ต๋๋ค.
ํ๋จ ์ค์๊ณผ ๊ฐ์ ๊ฒ์ด ๋ง์ ๊ณต๊ฐ์์ ๋ค์ ์ด์ํด ๋ณด์ด๊ณ ๋ง์ ๊ณต๊ฐ์ ์ฐจ์งํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๋๋ ์น, ์ฑ ๋ฑ์์ ๊ทธ ์๋ฅผ ๋ณด์์ ๊ฒ์ด๋ผ๊ณ ํ์ ํฉ๋๋ค. ์ด๊ฒ์ด ์ ๊ฐ ๊ทธ ์์ด๋์ด๋ฅผ ์๊ฐํด ๋ธ ์ด์ ์ ๋๋ค. ์ฌ๊ธฐ์ ์์ ๋ฅผ ๊ฒ์ํ์ฌ ์ง์ ์ง์ํ ๊ฐ์น๊ฐ ์๋์ง ๋๋ ๋ค์ ํ ํ๋ฆฟ์ ๋งก๊ธธ์ง ์ฌ๋ถ๋ฅผ ํ์ธํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์ต๋๋ค.
๊ทธ๋ฌ๋ ๋ชจ๋ ๊ธ๋ฆฌํ ์ฌ์ฉ์ ์ ์๋ ๋ฌธ์ ๋ฅผ ๊ณผ๋ํ๊ฒ ์์ง๋์ด๋งํ๋ ๊ฒ์ผ๋ก ๋ณด์ ๋๋ค. ์ฌ์ฉ์ ์ ์ ๊ตฌํ์ด ์๋ ์๋ณ๋ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ํ๋ ์คํ์ผ์ ๋ง๋๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํฉ๋๋ค. ๋์ CheckBox ๋ฐ ๊ธฐํ ์ปจํธ๋กค๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๊ธฐ๋ณธ ๋์์ธ์ด ์ฐ๋ฆฌ๊ฐ ํ ์ ์๋ ์ต์ ์ด์ด์ผ ํ์ง๋ง ๊ธฐ๋ณธ ์คํ์ผ์ ๋ค์ ํ ํ๋ฆฟ์ ์์ฑํ ์ ์์ ๋งํผ ๋จ์ํด์ผ ํฉ๋๋ค. ๋๋ ์ ๋ชจ๋ ์ฌ๋๋ค์ด ์ปจํธ๋กค์ ๋ค์ ํ ํ๋ฆฟํํ๋ ๋ฐ ๊ทธ๋ ๊ฒ ๋ถ์ ์ ์ธ์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๊ทธ๊ฒ์ด ํด๊ฒฐ์ฑ ์ด๋ฉฐ ์ค์ ๋ก๋ ์ปจํธ๋กค์ด ๋ ๋ณด์ด๋ ํฐ ์ฅ์ ์ ๋๋ค.
@robloo ์ฌํ ํ๋ฆฟ์ ๋ฐ๋ํ์ง๋ ์์ง๋ง ์ง๊ธ๊น์ง ๊ฒ์๋ ์์ ๋ฅผ ๋ณด๋ฉด ์ผ๋ถ ๊ฐ๋ฐ์๋ ํ์ฅ ๊ธ๋ฆฌํ์ ">"๋ฅผ ์ฌ์ฉํ๊ณ ๋ค๋ฅธ ๊ฐ๋ฐ์๋ ์์ง์ผ๋ก ํ์ฅํ ๋ ํ์ฅ ๊ธ๋ฆฌํ์ "v"๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๊ธ๋ฆฌํ์ ์์น์ ๋์ผํฉ๋๋ค. Expander ์ปจํธ๋กค์ ์ฌ์ฉํ๋ฉด ๊ฐ๋ฐ์๊ฐ ์ํ๋ ๋๋ก ๊ธ๋ฆฌํ๋ฅผ ์ฝ๊ฒ ์ค์ ํ ์ ์์ต๋๋ค. ๋ค์ ํ ํ๋ฆฟ์ ํญ์ ์ ์ถฉ์ ์ ์๋ฐํ๋ฉฐ ์ฃผ๋ก WinUI์ ์ปจํธ๋กค ํ ํ๋ฆฟ์ ๋ํ ํฅํ ๋ณ๊ฒฝ ์ฌํญ์ผ๋ก ์ธํด ์๋์ผ๋ก ์ด์ ์ ์ป์ง ๋ชปํ ๊ฒ์ ๋๋ค. ๋์ , ๊ทธ ๋ถ๋ด์ ์ด์ ๊ฐ๋ฐ์๊ฐ ์ฌ์ฉ์ ์ ์๋ ํ ํ๋ฆฟ์ ์ ์ง ๊ด๋ฆฌํด์ผ ํฉ๋๋ค.
์ผ๋ฐ์ ์ธ ์ฌ์ฉ์ ์ง์ ์๋๋ฆฌ์ค๋ฅผ ์๋ณํ๊ณ Expander ์ปจํธ๋กค์ ํตํด ๊ฐ๋ฅํ ํ ์ก์ธ์คํ ์ ์๋๋ก ๋ ธ๋ ฅํด์ผ ํฉ๋๋ค.
์๋ฅผ ๋ค์ด ๋ค์๊ณผ ๊ฐ์ ์ฌ์ฉ์ ์ ์ ๊ธ๋ฆฌํ์ ๊ฒฝ์ฐ( Fluent UI ์น ์ฌ์ดํธ ์์ ์ฐพ์ ์ ์์)๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
๊ธ๋ฆฌํ ๊ธฐํธ ์ฌ์ฉ์ ์ ์๋ ๋ชจ๋ ๋ด์ฅ ๊ธ๋ฆฌํ ์ ๋๋ฉ์ด์ ์ด ์ ์คํ๊ฒ ๊ณ ๋ ค๋์ด์ผ ํจ์ ์๋ฏธํฉ๋๋ค. ๋ํ ํฅ๋ฏธ๋กญ๊ฒ๋ ๊ณ ๊ฐ์ด ๋ ์ํ๋ ๊ฒ - ๊ธฐํธ์ ๋ฐ๋ผ ๊ธ๋ฆฌํ๋ฅผ ์ฝ๊ฒ ์ฌ์ฉ์ ์ ์ํ๊ฑฐ๋ ๊ธ๋ฆฌํ์ ๋ํ ๋ด์ฅ ์ ๋๋ฉ์ด์ (NavigationView์์ ๋ณผ ์ ์๋ ๊ฒ์ฒ๋ผ)์ ๊ฐ๋ ๊ธฐ๋ฅ. ๋๋ ๊ฐ์ธ์ ์ผ๋ก ์ ์๊ฐ ๋ ์ค์ํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ง๋ง ๊ทธ๊ฒ์ ๋ท๋ฐ์นจํ ํ๋ ๋ฐ์ดํฐ๊ฐ ์์ต๋๋ค.
๋ ๋ค๋ฅธ Expander ์ปจํธ๋กค์ Telerik Expander ์ปจํธ๋กค ๋ก ์ฌ๊ธฐ์์ ๋ ผ์ํ ์ผ๋ถ ์ฌ์ฉ์ ์ง์ API(์: ๊ธ๋ฆฌ์ค ๋๋ ๊ธ๋ฆฌํ ๊ธฐํธ์ ์์น๋ฅผ โโ๋ณ๊ฒฝํ๋ ๊ธฐ๋ฅ)๋ฅผ ๋ ธ์ถํ๋ฉฐ ์๊ฐ์ ์ป๊ธฐ ์ํด ์ฌ์ฉํ ์๋ ์์ต๋๋ค.
ExpandedGlyph
์ ํ ๊ธ๋ฆฌํ
๊ฐ๋ฐ์๊ฐ ์ ์ ํ๋ค๊ณ ์๊ฐํ๋ ๋๋ก ์ฌ์ ์ํ ์ ์๋ ํญ๋ชฉ
GlyphPlacement.Start .End .Above .Below
์๋ง๋?
๋๋น๋ฅผ ์ฑ์ฐ๋ ํค๋๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ฝํ ์ธ ์ ๋ ฌ์ ์ฌ์ฉํ๊ฑฐ๋ Glyph์ ํ ์คํธ๋ฅผ ํจ๊ป ๋ฌถ์ ์๋ ์์ต๋๋ค.
์๋ฆผ ์ผํฐ์ ๊ฒฝ์ฐ ํ์ฅ๊ธฐ์ ๊ฐ์ ์ค์ ๋ชจ๋๊ฐ ๋ช ํํ๊ฒ ํ์๋์ด ์๋๋ฐ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ ๊น์? ํ์ฅ ํจ๋์ ํ์ฅ ํค๋์์ ๋ถ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
@chingucoding NavigationView๋ ์ธ๋ก ์ด๊ธฐ ๋ชจ๋๋ฅผ ์ฌ์ฉํฉ๋๋ค(NavigationViewItem์ด ์ธ๋ก๋ก ํ์ฅ๋๊ธฐ ๋๋ฌธ์), ๋ง์ฃ ? ๊ทธ๋ฌ๋ฉด ํค๋์ ์ผ์ชฝ์ด๋ ์ค๋ฅธ์ชฝ์ ๊ธ๋ฆฌํ๋ฅผ ์ด๋ป๊ฒ ์ค์ ํ ์ ์์ต๋๊น? "์์"์ด ๋งจ ์์ ์๊ณ "๋"์ด ์๋ง๋ ํค๋์ ๋งจ ์๋์ ์์ ๊ฒ์ด๋ผ๊ณ ๊ทํ์ ์๊ฒฌ์ ์ฝ๊ณ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ธ๋ฆฌํ๋ฅผ ์ผ์ชฝ ์๋จ ๋ชจ์๋ฆฌ ๋๋ ์ค๋ฅธ์ชฝ ์๋จ ๋ชจ์๋ฆฌ์ ๋ฐฐ์นํ ์ ์๋์ง ์ฌ๋ถ๋ฅผ ์ง์ ํ๋ ๋ฐฉ๋ฒ์ด ํ์๋์ง ์์ต๋๋ค. ์ฐ๋ฆฌ๊ฐ ์ผ๋ฐ์ ์ผ๋ก ๋ณด๊ณ ์๋ ๊ฒ์ ExpandGlyphPlacementOffset๊ณผ ๊ฐ์ API๋ฅผ ์ฌ์ฉํ ํ์๊ฐ ์์ต๋๋ค.
์ ๊ฐ ๋ง์ ์๋ชปํ๋ค์ "์ํ ์ด๊ธฐ ๋ชจ๋"๋ ์ํ ์ฐจ์์ด ๊ณ ์ ๋์ด ์์ผ๋ฏ๋ก ๋ด์ฉ์ด ์ํ ๋ฐฉ์์ผ๋ก ํ์๋๋ค๋ ์๋ฏธ์ ๋๋ค. ์ธ๋ก ๋ชจ๋๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค. ๋ํ ์ผ์ชฝ ์๋จ๊ณผ ์ผ์ชฝ ํ๋จ ๋ชจ์๋ฆฌ๋ ๋ฌด์์ ๋๊น? ๋๋ ์์ด์ฝ์ด ์ค์์ ์์นํ๋ค๊ณ ๊ฐ์ ํ ๊ฒ์ด๊ณ , ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ํค๋๋ ํ์ฅ ์์ญ์์ ๋ง์ ๊ณต๊ฐ์ ์ฐจ์งํ์ง ์์์ผ ํ๊ฑฐ๋ ์ฐจ์งํ์ง ์์์ผ ํ๋ฉฐ ์ผ์ชฝ ์๋จ๊ณผ ์ผ์ชฝ ํ๋จ์ ๊ฑฐ์ ๋์ผํ๊ฒ ๋ ๊ฒ์ ๋๋ค.
๋ช
ํํ๊ฒ ํ๊ธฐ ์ํด ํ์ฅ๊ธฐ๊ฐ ์์ง ๋ฐฉํฅ์ผ๋ก ํ์ฅ๋๋ฉด start
๊ฐ ์ผ์ชฝ(RTL์์ ์ค๋ฅธ์ชฝ)์ด๊ณ end
๊ฐ ์ค๋ฅธ์ชฝ(RTL์์ ์ผ์ชฝ)์
๋๋ค. ์ํ ํ์ฅ์์ start
๋ ์๋จ์ด๊ณ end
๋ ํ๋จ์
๋๋ค. CSS flex-start ๋ฐ flex-end์ ์ ์ฌํฉ๋๋ค.
Visual Studio๋ ๊ฐ์ด๋ฐ ์์ด์ฝ์ ์ฌ์ฉํ์ง๋ง ํ์ฅ ๋จ์ถ ์์ญ์ ์ ์ฒด ์ปจํธ๋กค์ ๋๋ฆฝ๋๋ค.
๋ซ์:
ํผ์ง๋:
GlyphPlacement.Start .End .Above .Below
์๋ง๋?
์์ฃผ ๋ฉ์ง ์์ด๋์ด ๊ฐ์ต๋๋ค! ์์ ์๋๋ ์ด๋ป๊ฒ ์๊ฒผ์๊น์? Visual Studio๊ฐ ํ๋ ์ผ๊ณผ ๋น์ทํฉ๋๊น?
ExpandedGlyph
์ ํ ๊ธ๋ฆฌํ
๊ฐ๋ฐ์๊ฐ ์ ์ ํ๋ค๊ณ ์๊ฐํ๋ ๋๋ก ์ฌ์ ์ํ ์ ์๋ ํญ๋ชฉ
์ด๊ฒ์ ์ด๊ฒ์ ํ๋ ๋ฐฉ๋ฒ์ด ๋ ๊ฒ์ด์ง๋ง, ์ด๊ฒ์ ์ฐ๋ฆฌ๊ฐ ์์ด์ฝ์ ์์ง์ด๋ ๊ฒ์ ํ์ฉํ์ง ์์ ๊ฒ์ ๋๋ค(์: ํ์ ). ๊ทธ๋ฌ๋ ์ฌ๊ธฐ์ ์ ๋๋ฉ์ด์ ์ด ์๋ ๊ฒ๋ณด๋ค ์์ด์ฝ์ ์์ ํ ์ ํํ ๊ฐ๋ฅ์ฑ์ ์ฐ์ ์ํ๋ ๊ฒ์ด ๋ ํฉ๋ฆฌ์ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๋๋น๋ฅผ ์ฑ์ฐ๋ ํค๋๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ฝํ ์ธ ์ ๋ ฌ์ ์ฌ์ฉํ๊ฑฐ๋ Glyph์ ํ ์คํธ๋ฅผ ํจ๊ป ๋ฌถ์ ์๋ ์์ต๋๋ค.
100%
์๋ฆผ ์ผํฐ์ ๊ฒฝ์ฐ ํ์ฅ๊ธฐ์ ๊ฐ์ ์ค์ ๋ชจ๋๊ฐ ๋ช ํํ๊ฒ ํ์๋์ด ์๋๋ฐ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ ๊น์? ํ์ฅ ํจ๋์ ํ์ฅ ํค๋์์ ๋ถ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
๋๋ ์ด ํน์ ์๋๋ฆฌ์ค๊ฐ ํ์ฅ๊ธฐ ์ ์ด๋ก ๊ฐ๋จํ ๋ฌ์ฑํ๊ธฐ์๋ ๋๋ฌด ๋ณต์กํ ์ ์๋ค๊ณ ์ฐ๋ คํฉ๋๋ค. ๋ฒํผ์ ๋ฐฐ์น๋ ๋งค์ฐ ๋ ํนํ์ง๋ง ๋ ์ค์ํ ๊ฒ์ ํค๋์ ํ์ฅ ์์ด์ฝ์ด ๊ฐ์ ์ค์ ์์ง ์๋ค๋ ๊ฒ์ ๋๋ค. ํค๋์ ์์ด์ฝ์ ์๋ก ์์ ๋๋ ํ์ค ํ์ฅ ์ปจํธ๋กค๋ก ํ๊ธฐ์๋ ์๋นํ ์ด๋ ค์ธ ๊ฒ์ ๋๋ค. ๋ค์์ ์ฐธ์กฐ์ฉ ์์ ๋๋ค.
๋๋ ๋ค์ ํ ํ๋ฆฟ์ ๋ง๋๋ ๊ฒ์ ๋ฐ๋ํ์ง ์์ง๋ง ์ง๊ธ๊น์ง ๊ฒ์๋ ์์ ๋ฅผ ๋ณด๋ฉด ์ผ๋ถ ๊ฐ๋ฐ์๋ ํ์ฅ ๊ธ๋ฆฌํ์ ">"๋ฅผ ์ฌ์ฉํ๊ณ ๋ค๋ฅธ ๊ฐ๋ฐ์๋ ์์ง์ผ๋ก ํ์ฅํ ๋ ํ์ฅ ๊ธ๋ฆฌํ์ "v"๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๊ธ๋ฆฌํ์ ์์น์ ๋์ผํฉ๋๋ค. Expander ์ปจํธ๋กค์ ์ฌ์ฉํ๋ฉด ๊ฐ๋ฐ์๊ฐ ์ํ๋ ๋๋ก ๊ธ๋ฆฌํ๋ฅผ ์ฝ๊ฒ ์ค์ ํ ์ ์์ต๋๋ค.
@Felix-Dev ์ ์ฐฝํ ๋์์ธ ์์คํ ์์ ํ์คํํด์ผ ํ๋ ๊ฒ ์ค ํ๋์ ๋๋ค. ์ฌ์ฉ์๊ฐ ์ผ๊ด๋ ๋ชจ์๊ณผ ๋๋์ ๊ฐ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ด๊ฒ์ด ๋ณ๊ฒฝ๋์ด์ผ ํ๋ ์ ์ผํ ๊ฒฝ์ฐ๋ ์ฑ์ด ์์ฒด ๋์์ธ ์ธ์ด๋ฅผ ์ถฉ์กฑํ๊ธฐ ์ํด ์ด๋ฅผ ์ํํด์ผ ํ๊ฑฐ๋ ์ฐ๋ฆฌ๊ฐ ์๊ฐํ์ง ๋ชปํ ์๋ก์ด ์ฌ์ฉ ์ฌ๋ก๊ฐ ์๋ ๊ฒฝ์ฐ์ ๋๋ค. ์ด ๊ฒฝ์ฐ -- ํ ํ๋ฆฟ์ ๋ค์ ์์ฑํ์ญ์์ค.
ํธ์ง: ์ฒ์ ์ฝ์ ๋ Telerik ์์ ๋ฅผ ๋์ณค์ต๋๋ค. ์ฌ์ ํ ์ฐ๋ฆฌ๊ฐ ๋ณต์ก์ฑ์ ๋๋ฌด ๋ง์ด ์ฆ๊ฐ์ํค๊ณ ๋๋ฌด ๋ง์ ์ค๊ณ ์ต์ ์ ํ์ฉํ๋ค๊ณ ์๊ฐํฉ๋๋ค. (1) ์ฌ์ฉ์๊ฐ ์ฝ๊ฒ ์ธ์ํ์ง ๋ชปํฉ๋๋ค (2) ์ญ์ฌ์ ์ผ๋ก ํ์ํ์ง ์์ ๋ง์ ๋ณต์ก์ฑ์ ๋ ธ์ถํฉ๋๋ค. ๋ฌผ๋ก ์ฌ๊ธฐ์๋ ๋ฏธ์ธํ ์ ์ด ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ฌ์ฉ์๊ฐ ๋ค์ ํ ํ๋ฆฟ์ ๋ง๋ค ํ์๊ฐ ์๋ ์ถฉ๋ถํ ๊ธฐ๋ฅ์ ๋ ธ์ถํ๊ณ ์ถ์ง๋ง ๋์์ธ ์ธ์ด๊ฐ ํ๋ฆฟํด์ง ์ ๋๋ก ๋ง์ ๊ธฐ๋ฅ์ ๋ ธ์ถํ๊ณ ์ถ์ง๋ ์์ต๋๋ค.
WPF ๋๋ ๋ด๊ฐ ์๊ฐํ ์ ์๋ ๋ค๋ฅธ ํ์ฅ ์ปจํธ๋กค์ ์ด๋ฅผ ์ ์ดํ๊ธฐ ์ํด ์์ฑ์ ๋ ธ์ถํ ์ ์ด ์์ต๋๋ค. ์ค์ ๋ก ๋ณด๊ธฐ์ ๋ง์ ๋ถ๋ถ์ ์ฐจ์งํ๋ฉฐ XAML์์๋ง ์ง์๋์ด์ผ ํฉ๋๋ค. ๋ณด๊ธฐ ๋ชจ๋ธ(์ฆ, ์ด ๊ฒฝ์ฐ ์ปจํธ๋กค์ DP)์ ๊นจ๋ํ์ง ์์ ์ปจํธ๋กค์์ ์ด๋ฌํ ์คํ์ผ ์ ํ์ ๋ํด ์๋ฌด๊ฒ๋ ์์ง ์์์ผ ํฉ๋๋ค.
WPF ๋๋ ๋ด๊ฐ ์๊ฐํ ์ ์๋ ๋ค๋ฅธ ํ์ฅ ์ปจํธ๋กค์ ์ด๋ฅผ ์ ์ดํ๊ธฐ ์ํด ์์ฑ์ ๋ ธ์ถํ ์ ์ด ์์ต๋๋ค. ์ค์ ๋ก ๋ณด๊ธฐ์ ๋ง์ ๋ถ๋ถ์ ์ฐจ์งํ๋ฉฐ XAML์์๋ง ์ง์๋์ด์ผ ํฉ๋๋ค. ๋ณด๊ธฐ ๋ชจ๋ธ(์ฆ, ์ด ๊ฒฝ์ฐ ์ปจํธ๋กค์ DP)์ ๊นจ๋ํ์ง ์์ ์ปจํธ๋กค์์ ์ด๋ฌํ ์คํ์ผ ์ ํ์ ๋ํด ์๋ฌด๊ฒ๋ ์์ง ์์์ผ ํฉ๋๋ค.
@robloo ๊ธ๋ฆฌํ ์ปค์คํฐ๋ง์ด์ง์ ๋
ธ์ถํ ์ ์๋ ํ ๊ฐ์ง ๊ฐ๋ฅ์ฑ์ ๊ฒฝ๋ ์คํ์ผ๋ง์ ํตํ๋ ๊ฒ์
๋๋ค. ์ด๋ฌํ ๋ฆฌ์์ค๋ DP์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ปจํธ๋กค์ ๊ณต๊ฐ API ํ๋ฉด์ ์ผ๋ถ๋ก ๊ฐ์ฃผ๋์ด์ผ ํ์ง๋ง ์ปจํธ๋กค ํ
ํ๋ฆฟ(์ปจํธ๋กค์ ๋ชจ์)์ ํจ์ฌ ๊ฐ๊น์ต๋๋ค. ๋ฐ๋ผ์ ExpanderExpandGlyph
๋ฐ ExpanderCollapseGlyph
(์: NavigationView์๋ NavigationViewItemExpandedGlyph
๋ฆฌ์์ค๊ฐ ์์)์ ๊ฐ์ ๋ฆฌ์์ค๋ฅผ ๋
ธ์ถํ ์ ์์ต๋๋ค.
๊ทธ๋ฐ ์์ผ๋ก ๊ธ๋ฆฌํ ๊ธฐํธ ์ฌ์ฉ์ ์ง์ ์ ๋
ธ์ถํ๋ ๊ฒ์ Fluent Design ์น์ธ ์์ด์ฝ์ ์ฌ์ฉํ์ฌ MDL2 ๊ธ๊ผด์ ์๋ ๊ธ๊ผด ์์๋ฅผ ์ ๊ณตํ๊ธฐ ์ํ ๊ถ์ฅ ์ฌํญ์ผ๋ก ์ฝ์ ์๋ ์์ต๋๋ค. MDL2 ๊ธ๊ผด์ ๋ณด๋ฉด ์น์ ์์์ ๋ณธ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ ํ์ฅ/์ถ์ ๊ธ๋ฆฌํ ์์ด์ฝ(๋ค๋ฅธ ๊ฐ๋งค๊ธฐ ๋ชจ์, +/-, +/- ์ ๋ฑ)์ด ๋ชจ๋ ํฌํจ๋ ๊ฒ ๊ฐ์ต๋๋ค. ๊ฐ๋ฐ์๋ ์ฌ์ ํ FontFamily( SymbolThemeFontFamily
๋ฆฌ์์ค์์ ์ ๊ณต)๋ฅผ ์ฌ์ ์ํ ์ ์์ง๋ง ExpanderExpandGlyph
,... ๋ฆฌ์์ค๋ฅผ ์ปจํธ๋กค์ ๋ํ ๊ณต์ฉ ๋ฆฌ์์ค๋ก๋ง ์ง์ ๋
ธ์ถํ๋ฏ๋ก ๊ฐ๋ฐ์๋ ์ ์ฌ์ ์ผ๋ก ๋จผ์ ์์ด์ฝ์ ์ฌ์ฉ์ ์ ์ํ๋ ค๋ ๊ฒฝ์ฐ MDL2 ๊ธ๊ผด ํจ๋ฐ๋ฆฌ๋ฅผ ์ดํด๋ณด์ญ์์ค(๊ธ๋ฆฌํ์ฉ Expander์์ ์ฌ์ฉํ๋ ๊ธฐ๋ณธ ๊ธ๊ผด ํจ๋ฐ๋ฆฌ์ด๊ธฐ ๋๋ฌธ์).
๊ด์ฌ ์๋ ์ฌ๋๋ค์ ์ํด, ์ฃผ์ด์ง ์ปจํ ์คํธ(NumberBox ์คํ ๋ฒํผ ๊ธ๋ฆฌํ ์ฌ์ฉ์ ์ ์)์์ ๊ณ ์ ๋ ์์ด์ฝ ์ธํธ๋ง ์๋ฏธ๊ฐ ์์ ๋ WinUI๊ฐ ์์ฌ์ด ์ฌ์ฉ์ ์ ์ ๊ธ๋ฆฌํ ์ต์ ์ ์ ๊ณตํ๊ธฐ ์ํด ์ผ๋ง๋ ๋ฉ๋ฆฌ ๊ฐ ๊ฒ์ธ์ง์ ๋ํ ์์ง ํด๊ฒฐ๋์ง ์์ ๋ค๋ฅธ ๋ฌธ์ ๊ฐ ํ๋ ์ด์ ์์ต๋๋ค. : https://github.com/microsoft/microsoft-ui-xaml/issues/2789 ์ ์ด๋ ์ฌ๋ฌ๋ถ ์ค ์ผ๋ถ๋ ์ด๋ฏธ ๊ทธ ๋ฌธ์ ๋ฅผ ์๊ณ ์๋ค๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค. (๊ธ๋ฆฌํ) ์ฌ์ฉ์ ์ ์ ์ต์ ์ ๋ ธ์ถํ๋ ๋ฐฉ๋ฒ๊ณผ ๊ด๋ จํ์ฌ ์ฌ๊ธฐ์์ ์ฐธ์กฐํ ๊ฐ์น๊ฐ ์๋ค๊ณ ๋๊ผ์ต๋๋ค. ์๋ง๋ ์ฌ๊ธฐ์์ ์ฐพ์ ์๋ฃจ์ ์ WinUI์ ์ผ๊ด์ฑ์ ์ํด NumberBox์ ๊ฒฝ์ฐ์๋ ์ ์ฉ๋ ์ ์์ต๋๋ค.
@Felix-Dev ๊ฐ๋ฒผ์ด ์คํ์ผ๋ง์ ๋ํ ๋น์ ์ ์ถ์ฒ์ด ๊ฐ์ฅ ์๋ฏธ๊ฐ ์์ต๋๋ค. "ํธ์ง: โโ๊ฐ๋ฒผ์ด ์คํ์ผ์ ๊ฐ์ ํ๊ธฐ ์ํด ๋ช ๊ฐ์ง์ ๋ํ ๋ฆฌ์์ค๋ฅผ ์ ์ํ๋ ๊ฒ๋ ํฉ๋ฆฌ์ ์ธ ์ ํ์ผ ์ ์์ต๋๋ค."๊ฐ ์๋ฏธํ๋ ๋ฐ์ ๋๋ค. ์์ ๋ช ๊ฐ์ง ์๊ฒฌ.
๋ฌธ์ ๋ ๊ฐ๋ฐ์๊ฐ ๊ธ๋ฆฌํ๋ฅผ ์ ๊ณตํ์ง ์๊ณ BitmapIcon ๋๋ ์ฌ์ฉ์ ์ ์ FontIcon์ ์ผ๋ถ ํํ์ ๊ฐ์ ๋ค๋ฅธ ์์ด์ฝ ํํ๋ฅผ ๊ฐ์ง ๊ฐ๋ฅ์ฑ์ด ์ผ๋ง๋ ๋๋์ง์ ๋๋ค. ๊ธ๋ฆฌํ๊ฐ ์๋ ์์ด์ฝ์ด ์ค์ ๋ก ๋ง์ ๊ฐ๋ฐ์๊ฐ ์ฌ์ฉํ๋ ์ฌ์ฉ์ ์ง์ ์ง์ ์ด ์๋ ๊ฒฝ์ฐ @robloo ๋ฐ @Felix-๊ฐ ์ ์ํ ๊ฒ์ฒ๋ผ ๊ธ๋ฆฌํ(์ฌ๋ณผ ๊ธ๊ผด์ฉ)์ ์ฌ์ฉํ ๊ฒฝ๋ ์คํ์ผ๋ง ๋ฆฌ์์ค๊ฐ ์ฌ๊ธฐ์์ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๊ฐ๋ฐ .
๊ธ๋ฆฌํ ๋๋ ์ฌ์ฉ์ ์ ์ ๊ธ๊ผด์ด ์ถฉ๋ถํ์ง ์์ ๊ฒฝ์ฐ ๋ค์ ํ ํ๋ฆฟ์ ํญ์ ์ต์ ์ ๋๋ค.
๊ธ๋ฆฌํ๋ ์ผ๋ฐ์ ์ด์ง ์์ต๋๋ค.
๊ทธ๋ฐ ๋ค์ ๊ฐ๋ฅ์ฑ์ ์ ์ง๋ง ๋งค์ฐ ๊ฐ๋ฅํ SVG์ธ ๊ฒฝ๋ก๊ฐ ์์ต๋๋ค.
์ด๋ค ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ๋ ์ฒ์ ๋ ์๋๋ฆฌ์ค์ ์ด์ ์ ๋ง์ถฐ์ผ ํ์ง๋ง ์ธ ๋ฒ์งธ ์๋๋ฆฌ์ค์์๋ ํญ์ ๋ค์ ํ ํ๋ฆฟ์ ํ์ฉํด์ผ ํฉ๋๋ค.
๊ทธ๋ฐ ๋ค์ ๊ธ๋ฆฌํ์ฉ ContentPresenter๋ฅผ ์ฌ์ฉํ๊ณ ๊ทธ ์์ ๋ฌด์์ด๋ ๋ฃ์ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ Collapsed์์ Expanded๋ก ์ด๋ํ๊ธฐ ์ํด VisualStates์ ์ด๋ป๊ฒ ์๋ํ๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
์์ด์ฝ์ ์ ๋๋ฉ์ด์ ์ ์ ์ฉํ๋ ๊ฒฝ์ฐ - Lottie ์ปจํธ๋กค์ ์ฌ๊ธฐ์์ ์ฌ์ฉํ ์ ์์ต๋๊น?
๋ ๋ค๋ฅธ ์๊ฐ์ RadioButton๊ณผ RadioButton์ด ๊ทธ๋ฃน์ผ๋ก ์๋ ๊ฒ์ฒ๋ผ ...
ํ์ฅ๊ธฐ ๊ทธ๋ฃน์ด ์์ฝ๋์ธ ์ปจํธ๋กค์ ๋ง๋ค์ด์ผ ํฉ๋๊น? ํ ๋ฒ์ ํ๋์ ํ์ฅ๊ธฐ๋ง ํ์ฅํ ์ ์๋ ๋์์ ํ์ฉํ๋ ๊ฒ์ ๋ฌด์์
๋๊น?
https://explore.fast.design/components/fast-accordion
๊ธ๋ฆฌํ ๋๋ ์ฌ์ฉ์ ์ ์ ๊ธ๊ผด์ด ์ถฉ๋ถํ์ง ์์ ๊ฒฝ์ฐ ๋ค์ ํ ํ๋ฆฟ์ ํญ์ ์ต์ ์ ๋๋ค.
Segoe MDL2 ๋๋ FluentIcons๊ฐ ์๋ ๊ธ๊ผด ๊ธ๋ฆฌํ๊ฐ ๊ฐ์ฅ ๊ฐ๋ฅ์ฑ์ด ๋์ผ๋ฉฐ ์๋ง๋ ๊ธฐ๋ณธ๊ฐ์ผ ๊ฒ์ ๋๋ค.
๊ธ๋ฆฌํ๋ ์ผ๋ฐ์ ์ด์ง ์์ต๋๋ค.
๊ทธ๋ฐ ๋ค์ ๊ฐ๋ฅ์ฑ์ ์ ์ง๋ง ๋งค์ฐ ๊ฐ๋ฅํ SVG์ธ ๊ฒฝ๋ก๊ฐ ์์ต๋๋ค.
๊ทธ๋ฐ ๋ค์ PNG ๋๋ ์ ์ฒด ๋นํธ๋งต์ ๊ฐ๋ฅ์ฑ์ด ์์ง๋ง ๊ฐ๋ฐ์์๊ฒ๋ ๊ฐ๋ฅํ ์ต์ ์ผ ์ ์์ต๋๋ค.
์ด๋ค ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ๋ ์ฒ์ ๋ ์๋๋ฆฌ์ค์ ์ด์ ์ ๋ง์ถฐ์ผ ํ์ง๋ง ์ธ ๋ฒ์งธ ์๋๋ฆฌ์ค์์๋ ํญ์ ๋ค์ ํ ํ๋ฆฟ์ ํ์ฉํด์ผ ํฉ๋๋ค.
๋ค์ ํ ํ๋ฆฟ์ ํญ์ ์ ํ ์ฌํญ์ด์ง๋ง ๋ฌผ๋ก ์ปจํธ๋กค์ (์ฃผ์) ๋ณ๊ฒฝ ์ฌํญ์ด ์๋ ๊ฒฝ์ฐ ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์ค๋จ๋ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ๊ธ๋ฆฌํ(๋ฐ ์์ด์ฝ ๊ธ๊ผด)๋ฅผ ์ ํํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ์๋๋ฆฌ์ค์ด๋ฏ๋ก ๊ฐ๋ฒผ์ด ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์ต๋๋ค.
๊ทธ๋ฐ ๋ค์ ๊ธ๋ฆฌํ์ฉ ContentPresenter๋ฅผ ์ฌ์ฉํ๊ณ ๊ทธ ์์ ๋ฌด์์ด๋ ๋ฃ์ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ Collapsed์์ Expanded๋ก ์ด๋ํ๊ธฐ ์ํด VisualStates์ ์ด๋ป๊ฒ ์๋ํ๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
ContentPresenter๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์ถ์/ํ์ฅ๊ณผ ๊ด๋ จํ์ฌ ์ฐจ์ด๊ฐ ์์ผ๋ฉฐ ๋ค๋ฅธ ๊ฒ๊ณผ ๊ฐ์ ์์์ผ ๋ฟ์ ๋๋ค.
์์ด์ฝ์ ์ ๋๋ฉ์ด์ ์ ์ ์ฉํ๋ ๊ฒฝ์ฐ - Lottie ์ปจํธ๋กค์ ์ฌ๊ธฐ์์ ์ฌ์ฉํ ์ ์์ต๋๊น?
๋ฌธ์ ๋ ์ด๋ค ์ข ๋ฅ์ ์ ๋๋ฉ์ด์ ์ ๊ฐ๊ณ ์ถ๋๋ ๊ฒ์ ๋๋ค. ๊ฐ๋จํ ํ์ ์ ์ด๋ฏธ ์ถ์ฒจ ์์ด ํ ์ ์์ต๋๋ค.
๋ ๋ค๋ฅธ ์๊ฐ์ RadioButton๊ณผ RadioButton์ด ๊ทธ๋ฃน์ผ๋ก ์๋ ๊ฒ์ฒ๋ผ ...
ํ์ฅ๊ธฐ ๊ทธ๋ฃน์ด ์์ฝ๋์ธ ์ปจํธ๋กค์ ๋ง๋ค์ด์ผ ํฉ๋๊น? ํ ๋ฒ์ ํ๋์ ํ์ฅ๊ธฐ๋ง ํ์ฅํ ์ ์๋ ๋์์ ํ์ฉํ๋ ๊ฒ์ ๋ฌด์์ ๋๊น?
์ด์ฉ๋ฉด ๊ทธ๊ฒ์ ๋ณ๋์ ํต์ ๊ฐ ๋ ์ ์์ต๋๊น? ์๋ก ๋ฐฐํ์ ์ผ ์ ์๋ ์๋๋ฆฌ์ค๊ฐ ์์ง๋ง ๋ง์ ๊ฒฝ์ฐ์ ์ฌ๋ฌ ๊ฐ๋ฅผ ์ด์ด๋ ๋ฌธ์ ๊ฐ ๋์ง ์๋๋ค๊ณ ์๊ฐํฉ๋๋ค.
๊ทธ๋ฐ ๋ค์ ๊ธ๋ฆฌํ์ฉ ContentPresenter๋ฅผ ์ฌ์ฉํ๊ณ ๊ทธ ์์ ๋ฌด์์ด๋ ๋ฃ์ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ Collapsed์์ Expanded๋ก ์ด๋ํ๊ธฐ ์ํด VisualStates์ ์ด๋ป๊ฒ ์๋ํ๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
ContentPresenter๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์ถ์/ํ์ฅ๊ณผ ๊ด๋ จํ์ฌ ์ฐจ์ด๊ฐ ์์ผ๋ฉฐ ๋ค๋ฅธ ๊ฒ๊ณผ ๊ฐ์ ์์์ผ ๋ฟ์ ๋๋ค.
๊ทธ๋ฌ๋ ๋ ์ํ์์ ๋ชจ๋ ์ฌ์ฉ๋๋ ContentPresenter์ ๋๊น, ์๋๋ฉด ์ค์ ์์/ํ ๊ธ๋๋ ์ํ๋น ํ๋์ฉ์ ๋๊น?
์์ด์ฝ์ ์ ๋๋ฉ์ด์ ์ ์ ์ฉํ๋ ๊ฒฝ์ฐ - Lottie ์ปจํธ๋กค์ ์ฌ๊ธฐ์์ ์ฌ์ฉํ ์ ์์ต๋๊น?
๋ฌธ์ ๋ ์ด๋ค ์ข ๋ฅ์ ์ ๋๋ฉ์ด์ ์ ๊ฐ๊ณ ์ถ๋๋ ๊ฒ์ ๋๋ค. ๊ฐ๋จํ ํ์ ์ ์ด๋ฏธ ์ถ์ฒจ ์์ด ํ ์ ์์ต๋๋ค.
ํ์ ์ ๊ธ๋ฆฌํ๊ฐ ๋ฐฉํฅ ํ์ดํ/๊ฐ๋งค๊ธฐํ์ผ ๋ ์๋ฏธ๊ฐ ์์ต๋๋ค. ํ์ง๋ง ์ผ์ข ์ ํ ๋๋ ํํธ ์๋๋ฆฌ์ค์ ๋ํด ์ ๊ตฌ๊ฐ ์ผ์ง๊ณ ๊บผ์ง๋ฉด ์ด๋ป๊ฒ ๋ ๊น์? Lottie #2802๋ฅผ ์ฌ์ฉํ์ฌ ์ผ๋ฐํ๋ ์ ๋๋ฉ์ด์ ์์ด์ฝ ์ ์ด์ ๋ํ ์ ์์ด ์์ต๋๋ค. ๊ธฐ๋ณธ/๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ์ฌ์ฉ์ด ๋จ์ํ ์์ด์ฝ ํ์ ์ผ์ง๋ผ๋ ์ด ์ํฉ์์ ์ด๋ฅผ ์๊ตฌํฉ๋๊น?
๋ ๋ค๋ฅธ ์๊ฐ์ RadioButton๊ณผ RadioButton์ด ๊ทธ๋ฃน์ผ๋ก ์๋ ๊ฒ์ฒ๋ผ ...
ํ์ฅ๊ธฐ ๊ทธ๋ฃน์ด ์์ฝ๋์ธ ์ปจํธ๋กค์ ๋ง๋ค์ด์ผ ํฉ๋๊น? ํ ๋ฒ์ ํ๋์ ํ์ฅ๊ธฐ๋ง ํ์ฅํ ์ ์๋ ๋์์ ํ์ฉํ๋ ๊ฒ์ ๋ฌด์์ ๋๊น?์ด์ฉ๋ฉด ๊ทธ๊ฒ์ ๋ณ๋์ ํต์ ๊ฐ ๋ ์ ์์ต๋๊น? ์๋ก ๋ฐฐํ์ ์ผ ์ ์๋ ์๋๋ฆฌ์ค๊ฐ ์์ง๋ง ๋ง์ ๊ฒฝ์ฐ์ ์ฌ๋ฌ ๊ฐ๋ฅผ ์ด์ด๋ ๋ฌธ์ ๊ฐ ๋์ง ์๋๋ค๊ณ ์๊ฐํฉ๋๋ค.
Fast Design์ ์์ฝ๋์ธ ์ปจํธ๋กค์ด ํฌํจ๋์ด ์๊ณ ๋ณธ์ง์ ์ผ๋ก ํ์ฅ๊ธฐ ๋ฌด๋ฆฌ์ ๋์ผํ๊ธฐ ๋๋ฌธ์ ์ธ๊ธํ ๊ฒ๋ฟ์ ๋๋ค. ๋ค๋ง ํจ๊ป ์๋ํ๋ ๋ฐฉ์์ ๋ณ๊ฒฝํ๋ ๋ค์ค ๋ฐ ๋จ์ผ ๋์ API๊ฐ ์๋ค๋ ์ ๋ฟ์ ๋๋ค. Expander ์ปจํธ๋กค์ด ๋ง๋ค์ด์ง๋ฉด Accordion์ ๋ ผ๋ฆฌ์ ์ธ ๋ค์ ๋จ๊ณ๊ฐ ๋ ๊ฒ์ด๋ฉฐ ๊ฐ๋ณ ๋ฐฉํฅ์ ์ฌ์ ์ํ๋ ๋ฐฉํฅ ์์ฑ์ ์ฌ์ฉํ์ฌ ๋น๊ต์ ์ฝ๊ฒ ๋ฌ์ฑํ ์ ์์ด์ผ ํฉ๋๋ค.
๊ทธ๋ฐ ๋ค์ ๊ธ๋ฆฌํ์ฉ ContentPresenter๋ฅผ ์ฌ์ฉํ๊ณ ๊ทธ ์์ ๋ฌด์์ด๋ ๋ฃ์ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ Collapsed์์ Expanded๋ก ์ด๋ํ๊ธฐ ์ํด VisualStates์ ์ด๋ป๊ฒ ์๋ํ๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
ContentPresenter๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์ถ์/ํ์ฅ๊ณผ ๊ด๋ จํ์ฌ ์ฐจ์ด๊ฐ ์์ผ๋ฉฐ ๋ค๋ฅธ ๊ฒ๊ณผ ๊ฐ์ ์์์ผ ๋ฟ์ ๋๋ค.
๊ทธ๋ฌ๋ ๋ ์ํ์์ ๋ชจ๋ ์ฌ์ฉ๋๋ ContentPresenter์ ๋๊น, ์๋๋ฉด ์ค์ ์์/ํ ๊ธ๋๋ ์ํ๋น ํ๋์ฉ์ ๋๊น?
๋ ์ต์ ๋ชจ๋ ์๋ฏธ๊ฐ ์์ต๋๋ค. ContentPresenter์ ์ฝํ ์ธ ๋ฅผ ์ ํํ๋ ๊ฒ์ด ContentPresenter๋ฅผ ๋ฐ๊พธ๊ฑฐ๋ ๋ ๊ฐ๋ฅผ ๊ฐ๊ณ ํ๋๋ฅผ ์จ๊ธฐ๊ฑฐ๋ ํ์ํ๋ ๊ฒ๋ณด๋ค ๋ซ๋ค๊ณ ์๊ฐํฉ๋๋ค.
์์ด์ฝ์ ์ ๋๋ฉ์ด์ ์ ์ ์ฉํ๋ ๊ฒฝ์ฐ - Lottie ์ปจํธ๋กค์ ์ฌ๊ธฐ์์ ์ฌ์ฉํ ์ ์์ต๋๊น?
๋ฌธ์ ๋ ์ด๋ค ์ข ๋ฅ์ ์ ๋๋ฉ์ด์ ์ ๊ฐ๊ณ ์ถ๋๋ ๊ฒ์ ๋๋ค. ๊ฐ๋จํ ํ์ ์ ์ด๋ฏธ ์ถ์ฒจ ์์ด ํ ์ ์์ต๋๋ค.
ํ์ ์ ๊ธ๋ฆฌํ๊ฐ ๋ฐฉํฅ ํ์ดํ/๊ฐ๋งค๊ธฐํ์ผ ๋ ์๋ฏธ๊ฐ ์์ต๋๋ค. ํ์ง๋ง ์ผ์ข ์ ํ ๋๋ ํํธ ์๋๋ฆฌ์ค์ ๋ํด ์ ๊ตฌ๊ฐ ์ผ์ง๊ณ ๊บผ์ง๋ฉด ์ด๋ป๊ฒ ๋ ๊น์? Lottie #2802๋ฅผ ์ฌ์ฉํ์ฌ ์ผ๋ฐํ๋ ์ ๋๋ฉ์ด์ ์์ด์ฝ ์ ์ด์ ๋ํ ์ ์์ด ์์ต๋๋ค. ๊ธฐ๋ณธ/๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ์ฌ์ฉ์ด ๋จ์ํ ์์ด์ฝ ํ์ ์ผ์ง๋ผ๋ ์ด ์ํฉ์์ ์ด๋ฅผ ์๊ตฌํฉ๋๊น?
ํ์ ์ ๋๋ฉ์ด์ ์ ์ ๋๋ฉ์ด์ ์ ๋ง๋๋ ํ ๊ฐ์ง ๋ฐฉ๋ฒ์ด๋ฉฐ ์ฝ๊ฒ ๋ฌ์ฑํ ์ ์์ต๋๋ค. ๋ค๋ฅธ ์์ด์ฝ์ผ๋ก ์์ง์ด๋ ์์ด์ฝ์ ๊ฐ๋ ๊ฒ์ ์๋นํ ๋ค๋ฅผ ๊ฒ์ ๋๋ค. ๋ํ API๋ฅผ ๋ ๋ณต์กํ๊ฒ ๋ง๋ค ์๋ ์์ต๋๋ค(์ด๋ฌํ ๋์์ ์ด๋ป๊ฒ ์ง์ํฉ๋๊น? ์ ๋๋ฉ์ด์ 2๊ฐ์ ์์ด์ฝ 2๊ฐ? ๋๋ ์ค์งํ๋ ์ ๋๋ฉ์ด์ 1๊ฐ?)
๋ ๋ค๋ฅธ ์๊ฐ์ RadioButton๊ณผ RadioButton์ด ๊ทธ๋ฃน์ผ๋ก ์๋ ๊ฒ์ฒ๋ผ ...
ํ์ฅ๊ธฐ ๊ทธ๋ฃน์ด ์์ฝ๋์ธ ์ปจํธ๋กค์ ๋ง๋ค์ด์ผ ํฉ๋๊น? ํ ๋ฒ์ ํ๋์ ํ์ฅ๊ธฐ๋ง ํ์ฅํ ์ ์๋ ๋์์ ํ์ฉํ๋ ๊ฒ์ ๋ฌด์์ ๋๊น?์ด์ฉ๋ฉด ๊ทธ๊ฒ์ ๋ณ๋์ ํต์ ๊ฐ ๋ ์ ์์ต๋๊น? ์๋ก ๋ฐฐํ์ ์ผ ์ ์๋ ์๋๋ฆฌ์ค๊ฐ ์์ง๋ง ๋ง์ ๊ฒฝ์ฐ์ ์ฌ๋ฌ ๊ฐ๋ฅผ ์ด์ด๋ ๋ฌธ์ ๊ฐ ๋์ง ์๋๋ค๊ณ ์๊ฐํฉ๋๋ค.
Fast Design์ ์์ฝ๋์ธ ์ปจํธ๋กค์ด ํฌํจ๋์ด ์๊ณ ๋ณธ์ง์ ์ผ๋ก ํ์ฅ๊ธฐ ๋ฌด๋ฆฌ์ ๋์ผํ๊ธฐ ๋๋ฌธ์ ์ธ๊ธํ ๊ฒ๋ฟ์ ๋๋ค. ๋ค๋ง ํจ๊ป ์๋ํ๋ ๋ฐฉ์์ ๋ณ๊ฒฝํ๋ ๋ค์ค ๋ฐ ๋จ์ผ ๋์ API๊ฐ ์๋ค๋ ์ ๋ฟ์ ๋๋ค. Expander ์ปจํธ๋กค์ด ๋ง๋ค์ด์ง๋ฉด Accordion์ ๋ ผ๋ฆฌ์ ์ธ ๋ค์ ๋จ๊ณ๊ฐ ๋ ๊ฒ์ด๋ฉฐ ๊ฐ๋ณ ๋ฐฉํฅ์ ์ฌ์ ์ํ๋ ๋ฐฉํฅ ์์ฑ์ ์ฌ์ฉํ์ฌ ๋น๊ต์ ์ฝ๊ฒ ๋ฌ์ฑํ ์ ์์ด์ผ ํฉ๋๋ค.
์๊ฒ ์ต๋๋ค. ์, ์์ฝ๋์ธ ์ปจํธ๋กค์ ์ต์คํฌ๋ ์ปจํธ๋กค ์ดํ์ ํ์คํ ์ข์ ์์ด๋์ด์ด๋ฉฐ ๊ตฌํํ๊ธฐ ์ฌ์ธ ๊ฒ์ ๋๋ค!
ํ์ ์ ๊ธ๋ฆฌํ๊ฐ ๋ฐฉํฅ ํ์ดํ/๊ฐ๋งค๊ธฐํ์ผ ๋ ์๋ฏธ๊ฐ ์์ต๋๋ค. ํ์ง๋ง ์ผ์ข ์ ํ ๋๋ ํํธ ์๋๋ฆฌ์ค์ ๋ํด ์ ๊ตฌ๊ฐ ์ผ์ง๊ณ ๊บผ์ง๋ฉด ์ด๋ป๊ฒ ๋ ๊น์? Lottie #2802๋ฅผ ์ฌ์ฉํ์ฌ ์ผ๋ฐํ๋ ์ ๋๋ฉ์ด์ ์์ด์ฝ ์ ์ด์ ๋ํ ์ ์์ด ์์ต๋๋ค. ๊ธฐ๋ณธ/๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ์ฌ์ฉ์ด ๋จ์ํ ์์ด์ฝ ํ์ ์ผ์ง๋ผ๋ ์ด ์ํฉ์์ ์ด๋ฅผ ์๊ตฌํฉ๋๊น?
ํ์ ์ ๋๋ฉ์ด์ ์ ์ ๋๋ฉ์ด์ ์ ๋ง๋๋ ํ ๊ฐ์ง ๋ฐฉ๋ฒ์ด๋ฉฐ ์ฝ๊ฒ ๋ฌ์ฑํ ์ ์์ต๋๋ค. ๋ค๋ฅธ ์์ด์ฝ์ผ๋ก ์์ง์ด๋ ์์ด์ฝ์ ๊ฐ๋ ๊ฒ์ ์๋นํ ๋ค๋ฅผ ๊ฒ์ ๋๋ค. ๋ํ API๋ฅผ ๋ ๋ณต์กํ๊ฒ ๋ง๋ค ์๋ ์์ต๋๋ค(์ด๋ฌํ ๋์์ ์ด๋ป๊ฒ ์ง์ํฉ๋๊น? ์ ๋๋ฉ์ด์ 2๊ฐ์ ์์ด์ฝ 2๊ฐ? ๋๋ ์ค์งํ๋ ์ ๋๋ฉ์ด์ 1๊ฐ?)
์ด๊ฒ์ ํฐ ์ง๋ฌธ์ด๋ฉฐ ์์งํ ๋งํด์ Animated Icon ์ ์์ ๋ํ ๊ฒ์ ๋๋ค.
ํญ์ ํ์ดํ์ธ ๊ฒฝ์ฐ ๊ธ๋ฆฌํ/์์ด์ฝ์ ์ ๋๋ฉ์ด์ ์ ์ ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๊ทธ๋ฌ๋ ์ ๋๋ฉ์ด์ ์์ฒด๋ฅผ ์ ๊ฑฐํ๊ฑฐ๋ ๋ณ๊ฒฝํ ์ ์๋ ์ฌ์ด ๋ฐฉ๋ฒ์ด ์๋ ํ ๊ณ ์ ๋ฉ๋๋ค.
ํ์ ํ๋ Lottie ์ ๋๋ฉ์ด์ ์ ๋ง๋ค๋ฉด ๊ธฐ๋ณธ ์ ๋๋ฉ์ด์ ์ด ์ ์ง๋๋ฏ๋ก ๊ตฌํํด์ผ ํ ์์ ์ด ์กฐ๊ธ ๋ ๋ง์์ง์ง๋ง ํ์ํ ๊ฒฝ์ฐ ์์ด์ฝ๊ณผ ์ ๋๋ฉ์ด์ ์ ๋ณ๊ฒฝํ ์ ์์ด ๋ ์ ์ฐํฉ๋๋ค.
๊ฐ์ฅ ์ฌ์ด ์ต์ ์ ๊ธ๋ฆฌํ์ ์ ๋๋ฉ์ด์ ์ด ์๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ ๋ ๋ง์ด ์ถ๊ฐํ ์๋ก ์ฌ์ ์ํ๊ฑฐ๋ ๋ณ๊ฒฝํ๊ธฐ ์ฝ๊ฒ ๋ง๋๋ ๊ฒ์ด ๋ ์ค์ํด์ง๋๋ค.
์น์ ์ดํด๋ณด๋ฉด ์ผ๋ฐ์ ์ธ Expander UI ์์ ์์ ํ์ฅ/์ถ์ ๊ธ๋ฆฌํ์ ์ฌ์ฉ๋๋ ์ ์ ์์ด์ฝ์ ๋ง์ด ๋ณผ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ Windows์์๋ ์ ๋๋ฉ์ด์ ์ ์ ํธํ๋ ๊ฒ์ผ๋ก ๋ณด์ด๋ ์ด ์ปจํธ๋กค์ ์ ์ฌ ๊ณ ๊ฐ๋ ์์ต๋๋ค(์: ์ ธ์ NavigationView ๋ฐ ์๋ฆผ ์๋ฆผ ์ฐธ์กฐ). ๋ชจ์ ์ Fluent Design์ ์ด์ ์ค ํ๋์ด๋ฏ๋ก ์ปจํธ๋กค์ ๋ค์ ํ ํ๋ฆฟํํ ํ์ ์์ด ์ ๋๋ฉ์ด์ ๊ธ๋ฆฌํ๋ฅผ ์ํ๋ ๊ณ ๊ฐ์ ์ํด ์ต์ ์ ์ด์ด ๋๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ผ ๊ฒ์ ๋๋ค.
์ด์์ ์ผ๋ก๋ MS์ ์ฌ๋ฌ ํ์ด ์ ๋๋ฉ์ด์ ๊ธ๋ฆฌํ(์: ์ ๋๋ฉ์ด์ ํ์ดํ ๊ธ๋ฆฌํ)๊ฐ ์๋ Expander๋ฅผ ์ฌ์ฉํ๋ ค๋ ๊ฒฝ์ฐ ์ปจํธ๋กค์ด ๋ด์ฅ ์ต์ ์ ์ ๊ณตํ๋ฏ๋ก ๊ธฐ๋ณธ์ ์ผ๋ก ์ผ๊ด๋ ๊ฒฝํ์ ๊ฐ๊ฒ ๋ฉ๋๋ค. ๊ฐ ํ์ด ์ ๋๋ฉ์ด์ ์ ๋ํ ์ฑ ์์ ์ ธ์ผ ํ๋ค๋ฉด ๋ค๋ฅธ ์ ๋๋ฉ์ด์ ์ง์ ์๊ฐ, ๋ค๋ฅธ ์ ๋๋ฉ์ด์ ๋ฐฉํฅ(์: ์๊ณ ๋ฐฉํฅ ๋๋ ์๊ณ ๋ฐ๋ ๋ฐฉํฅ),...๋ด๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ๊ธฐ์ตํ๋ค๋ฉด ์๋ฆผ์ ๋ํ ๋ฌธ์ ๋ชจ์์ ์ ๋๋ฉ์ด์ ์ ๋ณด๊ฒ ๋ ๊ฒ์ ๋๋ค. ์ก์ ์ผํฐ๋ NavigationView์ ๊ธ๋ฆฌํ ์ ๋๋ฉ์ด์ ๊ณผ ๋ค๋ฆ ๋๋ค. ๊ฐ๋ฅํ๋ฉด ํผํด์ผ ํฉ๋๋ค.
์ ๋๋ฉ์ด์ ์ ๋ ์ฆ๊ฒ๊ณ UI๋ฅผ ๋งค๋๋ฝ๊ฒ ๋ง๋๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ํ์ ์คํ ๋ฆฌ๋ณด๋์ ํ๋ ์ฝ๋ฉ์ ์ ๋๋ฉ์ด์ ์ ์ถ๊ฐํ๋ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ด์ง๋ง ํด๋น ์ ๋๋ฉ์ด์ ์ ์ ๊ฑฐํ๊ฑฐ๋ ๋ณ๊ฒฝํ๊ธฐ ์ด๋ ค์ด ๊ฒฝ์ฐ AnimatedIcon ์ปจํธ๋กค์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ฌ์ฉ์ ์ ์๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ๋ ์ ์ฐํ ๋ฐฉ๋ฒ์ ๋ง๋๋ ์ข์ ๋ฐฉ๋ฒ์ผ ์ ์์ต๋๋ค.
ํ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ๋ค๋ฅธ ๋ฐฉ๋ฒ๋ณด๋ค ๋ซ๋ค๊ณ ๋งํ๋ ๊ฒ์ด ์๋๋๋ค. ์์ด์ฝ์ ์ ๋๋ฉ์ด์ ํจ๊ณผ๋ฅผ ์ฃผ๊ธฐ ๋๋ฌธ์ ์ฌ๊ธฐ์์ ์ฃผ์๋ฅผ ๊ธฐ์ธ์ด๋ฉด ๋ฉ๋๋ค. ์ด๊ฒ์ด ์ ์ปจํธ๋กค์ Raison Detra์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ธ๋ฆฌํ๋ฅผ ์ฌ์ฉ์ ์ ์ํ ์ ์์ด์ผ ํ๋ค๋ ๊ฒ์ด ์ธ์ ๋ ๊ฒฝ์ฐ - ํ์ ์ ๋๋ฉ์ด์ ์ด ํญ์ ์ ์ ํ์ง ์์ ์ ์์ต๋๋ค.
๋ฌด์์ ์์ง์ด๊ณ ๋ฌด์์ ์์ง์ด์ง ๋ง์์ผ ํ๋์ง๋ ๋งค์ฐ ์ด๋ ค์ด ์ง๋ฌธ์ ๋๋ค. Martin์ด ์ด๋ฏธ ์ธ๊ธํ๋ฏ์ด ํ์ ์ ๋๋ฉ์ด์ ์ด ํญ์ ์๋ฏธ๊ฐ ์๋ ๊ฒ์ ์๋๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ ๋๋ฉ์ด์ ์์ด์ฝ์๋ ์ฌ์ ํ ๋ง์ ๋ฏธํด๊ฒฐ ์ง๋ฌธ์ด ์์ต๋๋ค.
v1์ฉ ๊ธ๋ฆฌํ/์์ด์ฝ ์ ๋๋ฉ์ด์ ์ ๊ธ๋ ๊ฒ์ด ๋ ๋์ ์๋ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ํนํ ์ผ๋ฐ์ ์ด์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ฌ๊ณ ํด์ผ ํ ํ ๊ฐ์ง๋ ๊ณ์ธต์ NavigationView์์ ๊ธฐ์กด ์ ๋๋ฉ์ด์ ์ ์ ๊ฑฐํ์ฌ ๊ท ์ผํ ๊ฒฝํ์ ์ ๊ณตํ๋ ๊ฒ์ ๋๋ค. ํ์ฌ TreeView์ h-NavigationView ์ฌ์ด์๋ ์ด๋ฏธ ์์ด์ฝ ์ ํ์ ์ ๋๋ฉ์ด์ ํํ๊ฑฐ๋ ์ ๋๋ฉ์ด์ ํํ์ง ์๋ ๋ถ์ผ์น๊ฐ ์์ต๋๋ค.
์ ํํ. ๋ง์ง๋ง ๋จ๋ฝ์์ ์ฌ๊ธฐ์์ ๋ชจ๋ ํ์์ ๋ฐฉํดํ๋ ค๋ ์๋๋ ์์์ง๋ง ์ฌ๊ธฐ์ ์ฐ๋ฆฌ๊ฐ ์ง๋ฉดํ ๊ณผ์ ์ค ํ๋๋ "๊ถ๊ทน์ ์ธ ๊ฒ" ์ด์ธ์ ์ถฉ๋ถํ ์ฌ์ฉ์ ์ง์ ์ต์ ์ ์ ๊ณตํ๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ ์ฌ์ ํ ์ปจํธ๋กค์ด Windows์ ์ ์ฌ์ ์ผ๋ก ๋ ์ผ๊ด์ฑ์ ๊ฐ์ ธ์ค๋ ๋์ ๋ ๋ง์ ์ผ๊ด์ฑ์ ๊ฐ์ ธ์ค๋ ๋ฐ ๋์์ด ๋๋๋ก ํฉ๋๋ค.
์ด๋ฏธ ๋ณด์๋ฏ์ด ์์ด์ฝ ์ฌ์ฉ์ ์ ์์ ์ ๋๋ฉ์ด์ ์ง์(์ผ๊ด์ฑ์ ์ํด ๋ด์ฅ๋ ์ ๋๋ฉ์ด์ ์ ์ถ๊ฐํ์ฌ)์ ๋ชจ๋ ์ ๊ณตํ๋ ค๋ ๊ฒ์ด ์๋ก ์ฝ๊ฒ ์ถฉ๋ํ ์ ์๊ธฐ ๋๋ฌธ์ ์ฌ๊ธฐ์ ์๋ฒฝํ ์๋ฃจ์ ์ด ์์ ์๋ ์์ต๋๋ค.
Windows Shell๊ณผ ๊ฐ์ ์ ์ฌ ๊ณ ๊ฐ์ด ์ฌ๊ธฐ์์ ์ ๋๋ฉ์ด์ ์ ๋ณด๋ ๋ฐฉ์์ ํ์ธํ๋ ๊ฒ์ด ๋์์ด ๋ ์ ์์ต๋๋ค. 10X๋ ์ ๋๋ฉ์ด์ ์ ์ฝ๊ฐ์ ์ด์ ์ ๋ง์ถ ๊ฒ์ด๋ฉฐ Windows Shell ๋ฐ ๊ธฐ๋ณธ ์ ๊ณต Windows ์ฑ์ ์ฌ๊ธฐ์์ "๊ณ ๊ฐ"์ด ๋ ์ ์์ต๋๋ค. ์ ๋๋ฉ์ด์ ๊ธ๋ฆฌํ๊ฐ Windows ํ์ด 10X๋ก ๋ ธ๋ ฅํ๊ณ ์๋ ์ ์ฒด UX์์ ์ค์ํ ๋ถ๋ถ์ผ๋ก ๊ฐ์ฃผ๋๋ ๊ฒฝ์ฐ ์ง๊ธ์ ์ด ๋์ ์ "ํํธ"ํ์ง ์๊ณ ๋์ V1์์ ์ ๋๋ฉ์ด์ ์ง์์ ์ ๊ณตํด์ผ ํ ์ ์์ต๋๋ค.
์ ๋ ์์ด์ฝ์ ์ ๋๋ฉ์ด์ ์ ์ ์ฉํ๋ ์ผ๊ด๋ ์ ๊ทผ ๋ฐฉ์์ ๋ณด๊ณ ์ถ์ต๋๋ค. ํ์ฌ๋ก์๋ Animated Icon ์ ์์ผ๋ก ๋ณด์ ๋๋ค.
๋๋ NavigationView์์ ์ ๋๋ฉ์ด์ ์ ์ ๊ฑฐํ์ง ์์ ๊ฒ์ ๋๋ค. ์ด๋ WinUI์ ๋ํ ์์ ํ ์์ฒด์ ์ผ๋ก ํฌํจ๋ ์๋ก์ด ํจ๋ฌ๋ค์์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฌํ ๋ชจ๋ ์ ์ฌํ ์ปจํธ๋กค์ ์ ๋๋ฉ์ด์ ์ ์ถ๊ฐํ๋ ค๋ ์๋์ธ ๊ฒ์ฒ๋ผ ๋ณด์ ๋๋ค. ๋ฐ๋ผ์ ์ผ๋จ ์ค๋น๊ฐ ๋๋ฉด ์ปจํธ๋กค์ NavigationView์ ์ถ๊ฐ๋จ
ElementAnimator
๋ Expander์ ์ ๋๋ฉ์ด์
์ ์ ์ฉํ๊ธฐ์๋ ๋๋ฌด ๋ง๊ณ ExpandTransition
๋ฐ CollapseTransition
์ด๋ฉด ์ถฉ๋ถํฉ๋๋ค.
@mdtauk ๋ชฉ์ ์ ๋๋ฉ์ด์ ๋ง๋ค์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค! ํ์ฅ ๋ฐ ์ถ์ ์ ๋๋ฉ์ด์ ์ ๋ํด ๋ง์ํ์ ๋ด์ฉ์ ์ดํดํฉ๋๋ค.
๋๋ ์์ฝ๋์ธ ๋์์ด IsExpanded๋ฅผ ์ฌ์ฉํ์ฌ ๋ชฉ๋ก ์์ค ๋ ผ๋ฆฌ(์๋ก์ด Accordion ์ปจํธ๋กค์ด ์๋)๋ฅผ ํตํด ๋ฌ์ฑ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ด ๋ ผ๋ฆฌ๋ ๊ฐ๋ฐ์๊ฐ ์ด๋ฅผ ๋ค๋ฅธ ์๋๋ฆฌ์ค(์: ์ผ๋ถ ํ์ฅ๊ธฐ๊ฐ ์๋ก ๋ซํ๊ณ ๋ค๋ฅธ ํ์ฅ๊ธฐ๊ฐ ๋์์ ํ์ฅ๋ ์ ์๋ ๊ฒฝ์ฐ)์ ๋ง๊ฒ ์ฌ์ฉ์ ์ง์ ํ ์ ์์ต๋๋ค.
@Felix-Dev - ์ ์์ Telerik Expander๋ฅผ ์ถ๊ฐํ์ต๋๋ค. ๊ณต์ ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค!
๋ค์๊ณผ ๊ฐ์ ๋ฐฉํฅ์ผ๋ก ์ปค์คํฐ๋ง์ด์ง์ด ๊ฐ๋ฅํ๊ธฐ๋ฅผ ๋ฐ๋ผ๋ ๊ฒ ๊ฐ์ต๋๋ค.
๊ธ๋ฆฌํ ๋ชจ์ : ExpanderExpandGlyph
๋ฐ ExpanderCollapseGlyph
ํ์ฌ ๊ธ๋ฆฌํ์ ์์ด์ฝ ๊ธ๊ผด์ ์ ํํ๋ ๋ฐ ๊ฒฝ๋ ์คํ์ผ์ด ์ ํธ๋๋ ๊ฒ ๊ฐ์ต๋๋ค. v1 Expander์ ์ด ์์ค์ ์ฌ์ฉ์ ์ ์๊ฐ ํ์ํฉ๋๊น?
@Felix-Dev ๊ฐ๋ฐ์๋ ์ฌ์ ํ FontFamily(SymbolThemeFontFamily ๋ฆฌ์์ค์์ ์ ๊ณต)๋ฅผ ์ฌ์ ์ํ ์ ์์ง๋ง
ExpanderExpandGlyph
๋ง ์ง์ ๋ ธ์ถํฉ๋๋ค. ๋ฐ๋ผ์ ๊ฐ๋ฐ์๋ ์ ์ฌ์ ์ผ๋ก ์ํ๋ ๊ฒฝ์ฐ MDL2 ๊ธ๊ผด ํจ๋ฐ๋ฆฌ๋ฅผ ๋จผ์ ์ดํด๋ณผ ๊ฒ์ ๋๋ค. ์์ด์ฝ์ ์ฌ์ฉ์ ์ ์ํฉ๋๋ค(๊ธ๋ฆฌํ์ฉ Expander์์ ์ฌ์ฉํ๋ ๊ธฐ๋ณธ ๊ธ๊ผด ๋ชจ์์ด๊ธฐ ๋๋ฌธ์).
๊ธ๋ฆฌํ ์ ๋๋ฉ์ด์
: ํ์ฅ ์ ๋ค๋ฅธ ๊ธ๋ฆฌํ๋ก์ ๋ณ๊ฒฝ ํฌํจ - AnimatedIcon #2802๋ก ๋ถ๋ถ์ ์ผ๋ก ํด๊ฒฐ๋์์ต๋๋ค. ์ด ์์ค์ ์ฌ์ฉ์ ์ ์๋ v1 Expander์ ํ์ํ์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค.
@chingucoding์ด ๋ช
์๋์ด ์์ผ๋ฉฐ ๋์ํ๋ ๊ฒฝํฅ์ด ์์ต๋๋ค.
v1์ฉ ๊ธ๋ฆฌํ/์์ด์ฝ ์ ๋๋ฉ์ด์ ์ ๊ธ๋ ๊ฒ์ด ๋ ๋์ ์๋ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ํนํ ์ผ๋ฐ์ ์ด์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
๊ธ๋ฆฌํ ์์น : v1 Expander์์ ์ด ์์ค์ ์ฌ์ฉ์ ์ ์๊ฐ ํ์ํฉ๋๊น? v1์ ExpandDirection ๊ณผ ๊ธ๋ฆฌํ ์์น ๋ณ๊ฒฝ ์ต์ ์ด ํฌํจ๋ ๊ฒฝ์ฐ ์ด๋ ๋์ฑ ๋ณต์กํฉ๋๋ค. @Felix-Dev ์ค๋ช
TopLeft, TopRight, BottomCentered(๋ฐ ๋ ๋ง์(Left, Right, ...)) ๊ฐ์ด ์๋ ExpandGlyphPlacementMode์ ํ์ํ ๊ฒฝ์ฐ ๊ฐ๋ฐ์๊ฐ ๊ธฐ๋ณธ ์์น(๋ฐฐ์น ๋ชจ๋๋ก ์ค์ )๋ฅผ ์์ ํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ์ถ๊ฐ ExpandGlyphPlacementOffset ์์ฑ์ด ์์ต๋๋ค.
์ด๋ฒ ์ฃผ๋ง์ ์์๋ ํ๋ฅญํ ํ ๋ก ์ ์ ๋๋ก ์ดํดํ๊ธธ ๋ฐ๋๋๋ค. ์ ๊ฐ ์๋ชป ์๊ณ ์๋ ๋ถ๋ถ์ด ์์ผ๋ฉด ์๋ ค์ฃผ์ธ์! ์ด์ ๋ํด ํต์ฐฐ๋ ฅ ์๋ ์๊ฐ์ ํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ๐
๊ธ๋ฆฌํ ๋ชจ์
๊ธ๋ฆฌํ ์์น
V1์ ํฌํจํ ์ ์๋ ๊ฐ์ฅ ์ฝ๊ณ ์ค์ํ ์ฌ์ฉ์ ์ ์๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๋๋ ๋ํ ๊ธ๋ฆฌํ๋ฅผ ์จ๊ธฐ๋ ๋ฐฉ๋ฒ์ ์ถ๊ฐํ ๊ฒ์ ๋๋ค
๊ธ๋ฆฌํ ์ ๋๋ฉ์ด์
์ํ ์ ํ
์ฐ์ ์์ ์ง์ ์ด ํ์ํ๊ณ ํต์ฌ ๋์ ๋ฐ ๊ธฐ๋ฅ์ด ๋๋ฌด ์ค๋ ๊ฑธ๋ฆฌ๋ ๊ฒฝ์ฐ ์ฐ์ ์์๊ฐ ๋ฎ์ ์ ์์ต๋๋ค.
์ฐ์ ์์ @mdtauk์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค!
์๋ก์ด ๊ณต๊ฐ ์ง๋ฌธ์ ์ถ๊ฐํ์ต๋๋ค.
๋ด์ฉ์ ๋์ฒดํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ง๋ง ์ ๋ณด ํ์์ค์ ๋์์ธํ๋ ์ฌ๋๋ค์ ํ์ฅ๊ธฐ ๋์์ด๋๊ฐ ๋ณผ ์ ์๋ ์ ์ ์ ์๋ ํ์์ค์ ๋ํ ๋์์ธ ์ฌ์์ ์ ๊ณตํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
ํ ๋ํ๋ค.
์ฌ๊ธฐ _๋ง์_ ๋ํ๊ฐ ์์ต๋๋ค! ์ ๋๋ฉ์ด์ ์ฃผ์ ์...
ElementAnimator๊ฐ Expander์ ์ ๋๋ฉ์ด์ ์ ์ ์ฉํ๊ธฐ์๋ ๋๋ฌด ๋ง์ ๊ฒ์ฒ๋ผ ๋ค๋ฆฌ๋ฉฐ ExpandTransition ๋ฐ CollapseTransition์ด๋ฉด ์ถฉ๋ถํฉ๋๋ค.
ElementAnimator๊ฐ Expander์ ์ ๋๋ฉ์ด์ ์ ์ ์ฉํ๊ธฐ์๋ ๋๋ฌด ๋ง๋ค๋ ๋ฐ ๋์ํฉ๋๋ค. ๋ชจ๋ ๊ฒ์ด ItemsRepeater์ ์์ผ๋ฉด ์๋ํ ์ ์์ง๋ง ElementAnimator๋ ์์ง ItemsRepeater ์ธ๋ถ์์ ์๋ํ์ง ์์ผ๋ฏ๋ก ์ด๋ฅผ ํ์ ํด์ผ ํฉ๋๋ค.
๋๋ ์ด๋ก ์ ์ผ๋ก ExpandTransition๊ณผ CollapseTransition์ด ์๋ค๋ ์์ด๋์ด๋ฅผ ์ข์ํ์ง๋ง Transition API๊ฐ ์ด๋ก ์์ผ๋ก๋ ์ข์ง๋ง ์ค์ ๋ก๋ ์ฌ์ฉ์ ์ ์ํ ์ ์๊ธฐ ๋๋ฌธ์ ์ค์ ๋ก ์ข์ง ์๋ค๋ ํผ๋๋ฐฑ์ ๋ง์ด ๋ฐ์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ปจํธ๋กค๊ณผ ๋ฐ์ ํ๊ฒ ์ฐ๊ฒฐ๋์ด ์์ต๋๋ค. ์ฌ์ฉ๋๋ฉฐ OS hooks์ ์์กดํ๊ธฐ ๋๋ฌธ์ WinUI 2.x ์๋ฆฌ์ฆ์์ ๋น๋ํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด๋ฌํ ํน์ ์ ํ์ด ์กด์ฌํ์ง ์๊ธฐ ๋๋ฌธ์ ThemeTransition API ์ปฌ๋ ์ ์ ์ถ๊ฐํ๋ ๊ฒ๋ณด๋ค ๋ค๋ฅธ ์ต์ ์ ์ดํด๋ณด๊ณ ์ถ์ต๋๋ค.
๋ฌด์๋ณด๋ค๋ ์๋ก์ด UI ์์๊ฐ ํ์ด์ง์ ๋ค์ด๊ฐ๊ณ /๋๊ณ /์ค์ด๊ฑฐ๋/๋ ๋๋ฉด์ ์ฝํ ์ธ ๊ฐ ์ด๋ํ๋ "๋ ์ด์์ ์ ๋๋ฉ์ด์ "์ ์ผ๋ฐ์ ์ธ ์์ญ์ ์ค๋๋ ํ๋ซํผ์ธ Xaml์์ ์ ๋๋ก ์ง์๋์ง ์์ต๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด WinUI 3๋ ํ์ํ์ง๋ง ์ฆ๊ฐ์ ์ธ ๋ก๋๋งต์๋ ์์ต๋๋ค.
ํนํ Expander์ ๊ฒฝ์ฐ ์ ์ ํ ์กฐ์น๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒ์
๋๋ค.
1) Expander ์ฝ๋์ ์ ๋๋ฉ์ด์
ํ๋/์ถ์๋ฅผ ํ๋ ์ฝ๋ฉํฉ๋๋ค(๊ทธ๋ฆฌ๊ณ API๋ฅผ ํฌํจํ์ฌ ํด์ ํ๋ ๊ฒ์ ๊ณ ๋ คํฉ๋๋ค. ๊ฐ์ธ์ ์ผ๋ก ํ์ํ๋ค๊ณ ์๊ฐํ์ง๋ ์์ง๋ง)
2) ํ์ฅ๊ธฐ ์๋์ ์ฝํ
์ธ ๊ฐ ์๋๋ก "๋ฐ์ด๋ด๋ฆฌ๋" ๊ฒ์ด ์๋๋ผ ์๋๋ก ๋ฏธ๋๋ฌ์ง๋๋ก ํ์ฅ๊ธฐ ์ฃผ๋ณ์ ์ฝํ
์ธ ์ ์ ๋๋ฉ์ด์
์ ์ ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์ฑ ๊ฐ๋ฐ์์๊ฒ ์ง์นจ์ ์ ๊ณตํฉ๋๋ค.
๋๋ (2)๊ฐ "๋ ์ด์์ ์ ๋๋ฉ์ด์ " ์์ด ์ผ๋ฐ์ ์ผ๋ก ํด๊ฒฐํ ์ ์๋ค๊ณ ์๊ฐํ์ง ์์ง๋ง ์๋ง๋ Expander ์๋์ ์ฝํ ์ธ ์์ RepositionThemeAnimation์ ์ฌ์ฉํ์ฌ ํด๊ฒฐํ ์ ์์ ๊ฒ์ ๋๋ค.
@stmoy ๊ธฐ์กด ๊ฒ๊ณผ ํจ๊ป ์ฌ์ฉํ๋ ค๋ฉด (1)์ PopInThemeAnimation์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ด ์ ์์ ์ฌ์ ์์ฑ์ ์ํด ์น์ธ๋์์ต๋๋ค.
WinUI ํ๊ณผ์ ๋ ผ์์ ์ผํ์ผ๋ก ์ฐ๋ฆฌ๋ Expander๊ฐ V1์ ์/์๋ ํ์ฅ์ ์ํด ExpandDirection์ ์ง์ํ๋๋ก ๋ฒ์๋ฅผ ์ง์ ํ ์ ์๋ค๊ณ ๊ฒฐ์ ํ์ต๋๋ค. ์ด๊ฒ์ Expander์ ๋ํด ๋ณธ ์๋๋ฆฌ์ค๋ฅผ ๋ค๋ฃจ๊ณ ํฅํ ์ ์ฌ์ ์ผ๋ก ์ผ์ชฝ/์ค๋ฅธ์ชฝ ํ์ฅ์ ์ถ๊ฐํ ์ ์๋ ํ ๋๋ฅผ ๋ง๋ จํฉ๋๋ค.
์ฌ๊ธฐ์์ ๋ ผ์๋ฅผ ๊ณ์ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ฌ์ ๋ฐ ๊ด๋ จ PR์ด ์ ๊ณต๋๋ฉด ๋ ์์ธํ ๋ ผ์๊ฐ ์์ ๊ฒ์ ๋๋ค. ํนํ ์ด ๊ณต๊ฐ ์ง๋ฌธ์ ๋ํ ๊ทํ์ ์๊ฐ์ ๋ฃ๊ณ ์ถ์ต๋๋ค.
InfoBar์ ๊ฒฝ์ฐ ๊ตฌ์ฒด์ ์ผ๋ก ๋ฌด์์ด ํ์ํ๊ณ ์ด Expander ์ปจํธ๋กค์ ์ด๋ป๊ฒ ํ์ฉํ ์ ์๋์ง ์์ธํ ์์๋ณด๊ธฐ ์ํด ๋ณ๋์ ์ ์์ ์ด์ด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ด ์ฒซ ๋ฒ์งธ ์๊ฐ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
ํ์ฌ ์ด Expander ๋์์ ์ด์ ์ ์ป์ ์ ์๋ WinUI์ ๋ค๋ฅธ ์ปจํธ๋กค๋ ์กฐ์ฌํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
InfoBar๋ฅผ ์๋ฅด๊ธฐ ์ํ ๋ช ๊ฐ์ง ์ด๊ธฐ ๊ตฌ์ฑ ์์:
๊ตฌํ์ ์ํด ๋ด ์ด๊ธฐ ์๊ฐ์ InfoBar๊ฐ Expander์์ ํ์๋์ด์ผ ํ๊ณ Expander์ ์ฝํ ์ธ ์์ ์ค์ฒฉ๋์ด์๋ ์ ๋๋ค๋ ๊ฒ์ ๋๋ค. ์๊ฐ?
ํ์ฌ ์ด Expander ๋์์ ์ด์ ์ ์ป์ ์ ์๋ WinUI์ ๋ค๋ฅธ ์ปจํธ๋กค๋ ์กฐ์ฌํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
InfoBar๋ฅผ ์๋ฅด๊ธฐ ์ํ ๋ช ๊ฐ์ง ์ด๊ธฐ ๊ตฌ์ฑ ์์:
์ต์คํฌ๋๋ ํ์ฅ๋๋ ์ฝํ ์ธ ์์ ๊ฐ๋งค๊ธฐ ๋ชจ์ ๋ฒํผ์ ๋ถ๋ฆฌํ ์ ์์ด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
์๋ฆผ์ด ์ด ์์
์ ์ํํฉ๋๋ค.
๋ํ InformationBar ์ปจํธ๋กค์ด Expander๋ฅผ ํตํฉํ ์ ์๋๋ก ํฉ๋๋ค.
๋ถ๋ฆฌํ๋ฉด ํ๋/์์ฑ์ด๋ฉ๋๊น? ๋ฐ๋ผ์ ์ด ์์ฑ์ UI ์์ ๋๋ ๋ฒํผ์ ์ง์ ํ๋ฉด ํ์ฅ๊ธฐ ํค๋์ ํด๋น ๋ฒํผ์ด ํ์๋์ง ์์ต๋๊น?
๊ตฌํ์ ์ํด ๋ด ์ด๊ธฐ ์๊ฐ์ InfoBar๊ฐ Expander์์ ํ์๋์ด์ผ ํ๊ณ Expander์ ์ฝํ ์ธ ์์ ์ค์ฒฉ๋์ด์๋ ์ ๋๋ค๋ ๊ฒ์ ๋๋ค. ์๊ฐ?
Expander๊ฐ Toggle/Disclose ๋ฒํผ์์ ์ฝํ ์ธ ์ ํค๋๋ฅผ ๋ถ๋ฆฌํ ์ ์๋ ๊ฒฝ์ฐ ๊ตฌํํ๋ ค๋ฉด InformationBar์ ๋ ๋ง์ ์์ ์ด ํ์ํฉ๋๋ค.
Expander ์ปจํธ๋กค์ ํนํ Windows Shell์์ ์ฌ์ฉํ ์ ์์ ๋ฟ๋ง ์๋๋ผ ์์ผ๋ก ๋ค์ํ ๋ค๋ฅธ ์ปจํธ๋กค์ ํตํฉํ ์ ์๋๋ก ์ต๋ํ ์ ์ฐํด์ผ ํฉ๋๋ค.
Expander ์ฌ์ ์ ์ด๊ธฐ ์ ๋ณด๋ฅผ ์ถ๊ฐ ํ๊ณ PR์ ์ด์์ต๋๋ค. ์ฌ๊ธฐ์์ ์ฌ์์ ๋ํ ํ ๋ก ์ ๊ณ์ํด ์ฃผ์ธ์! ์ฌ์ ๋ฆฌํฌ์งํ ๋ฆฌ์ ์๋ PR 100์ ๋๋ค ๐
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
WinUI ํ๋ก์ ํธ @kat-y์ ์ค์ ๊ฒ์ ํ์ํฉ๋๋ค. Xaml์ ์ค๋ ์ญ์ฌ๋ฅผ ๊ฐ์ง๊ณ ์์ง๋ง ์ฒ์ ์ฌ์ฉํ๋ ์ฌ๋๋ค์๊ฒ๋ ์ฝ๊ฐ ๊ธฐ์ดํ ์ ์์ต๋๋ค. WinUI๋ ์๋ ๋ฐฉ์์ ์ฌ๊ณ ํ ์ ์๋ ๊ธฐํ์ด์ง๋ง ์ด ๊ฒฝ์ฐ ํ์ฅ๊ธฐ๋ ๋น๊ต์ ๊ฐ๋จํ ์ปจํธ๋กค์ด๋ฏ๋ก WPF์์ WinUI๋ก์ ๊ฐ๋จํ ์ด๋์ผ๋ก ์ถฉ๋ถํฉ๋๋ค.
@robloo XAML ์ปจํธ๋กค ํ ํ๋ฆฟ์ ๋ค์ ์์ง๋์ด๋งํ ํ์๊ฐ ์๋ค๋ ๊ทํ์ ์ฃผ์ฅ์ ๋์ํ์ง ์์ต๋๋ค. WPF AFAIR์๋ WinUI/Fluent์์ ์ ์ ํ์ง ์์ ๋ง์ ํฌ๋กฌ ์ ์ฌ ์์๊ฐ ์์ต๋๋ค.
Chevron ๋ฐ ํฐ์น ๋์ ํฌ๊ธฐ๋ฅผ ์ฒ๋ฆฌํ๊ณ ๊ธ๊ผด ํฌ๊ธฐ ์กฐ์ ํฌ๊ธฐ๋ฅผ ์ฌ์ฉํฉ๋๋ค. Chevron์ ์ ๊ฑฐํ๊ฑฐ๋ ์ถ๊ฐํ๊ธฐ ์ฌ์์ผ ํฉ๋๋ค.
์ด ์์๋ ํ ์คํธ์ ์ผ์นํ๋ ๊ฐ๋งค๊ธฐ ๋ชจ์์ด ์์ต๋๋ค.
์ด ์์๋ ๊ฐ๋งค๊ธฐ ๋ชจ์์ด ์ ํ ์์ต๋๋ค.
์ด ์์๋ ์ ์ชฝ์ด ๊ฐ๋งค๊ธฐ ๋ชจ์์ ํฅํ๊ณ ์์ต๋๋ค.
๊ตฌํ๊ณผ ๊ด๋ จํ์ฌ ์ฌ์ฉ์๊ฐ ์ ๋๋ฉ์ด์ ์ ๋์ง ์๋ ํ ์ด๊ณ ๋ซ์ ๋ ์ ๋๋ฉ์ด์ ์ ํ์ด ์์ด์ผ ํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ์ํ๋ง ์ ํ๋ฉ๋๋ค.