728x90
반응형

WPF - 컨트롤 (Controls)
1. Content Controls
ContentControl을 기반으로, 하나의 자식 요소(UIElement 또는 데이터)를 가질 수 있는 컨트롤
- 단일 컨텐츠만 포함 가능 (하지만 복합 구조는 StackPanel 등으로 감싸서 가능)
- 컨텐츠는 텍스트, 이미지, 다른 컨트롤 모두 가능
| 대표 컨트롤 | 설명 |
| Button | 단일 내용(Button 내부에 이미지, 텍스트, StackPanel 등 사용 가능) |
| Label | 텍스트 또는 다른 UI 요소 출력 |
| ContentControl | 직접 사용보단 기반 클래스 역할 |
| ToolTip, ScrollViewer 등 | 내부에 하나의 요소만 포함할 수 있음 |
<Button>
<StackPanel Orientation="Horizontal">
<Image Source="icon.png" Width="16"/>
<TextBlock Text="Save" Margin="5,0,0,0"/>
</StackPanel>
</Button>
2. Headered Content Controls
HeaderedContentControl 기반, Content + Header를 가짐
- Header: 제목이나 라벨 역할
- Content: 본문 역할
| 대표 컨트롤 | 설명 |
| GroupBox | 헤더와 내용 모두 가짐 |
| Expander | 펼치기/접기 가능한 헤더와 내용 영역 |
| TabItem | 탭의 제목(Header)과 내부 컨텐츠(Content) |
<GroupBox Header="설정">
<StackPanel>
<CheckBox Content="옵션1"/>
</StackPanel>
</GroupBox>
3. Text Controls
사용자 텍스트 입력 또는 출력이 주 목적이다.
- 대부분 Text 속성을 가지며 PasswordBox는 예외.
- 입력 시 TextChanged 이벤트로 감지한다.
| 대표 컨트롤 | 설명 |
| TextBlock | 읽기 전용 텍스트 출력 |
| TextBox | 텍스트 입력 |
| PasswordBox | 보안용 텍스트 입력 (바인딩 불가) |
| RichTextBox | 포맷 있는 텍스트 입력 및 편집 (FlowDocument 기반) |
<TextBox Text="{Binding UserInput}" />
4. List Controls
여러 항목 중에서 선택하거나 스크롤하며 보는 컨트롤이다.
- Items 또는 ItemsSource로 목록 구성되어 있따.
- SelectedItem, SelectedIndex 등으로 선택 추적한다.
| 대표 컨트롤 | 설명 |
| ListBox | 여러 항목 중 다중 선택 가능 |
| ComboBox | 드롭다운 리스트 제공 |
| ListView | ListBox + GridView 스타일 |
| TreeView | 트리 형태로 아이템 표시 |
| TabControl | 탭 형태로 아이템 관리 |
<ListBox ItemsSource="{Binding Items}" SelectedItem="{Binding SelectedItem}" />
5. Range-Based Controls
범위값을 입력하거나 표시하는 컨트롤
- 공통 속성: Minimum, Maximum, Value
- ValueChanged 이벤트로 값 변경 감지 가능
| 대표 컨트롤 | 설명 |
| Slider | 슬라이더로 범위 값 조정 |
| ProgressBar | 진행률 표시 |
| ScrollBar | 스크롤 표시/조정용 |
| RangeBase | 위의 컨트롤들이 상속하는 기본 클래스 |
6. Date Controls
- SelectedDate, DisplayDate, BlackoutDates 등 날짜 관련 속성들 존재
- DateTime? (nullable) 타입으로 바인딩
| 대표 컨트롤 | 설명 |
| Calendar | 날짜 선택 가능한 달력 컨트롤 |
| DatePicker | 텍스트박스 + 팝업 달력 UI |
추가 내용
- 이 분류는 단순히 UI 스타일을 말하는 게 아니라 속성 모델이 다르다. (ex. Text vs Content vs Items)
- 나중에 Template, Binding, Validation 배울 때 이 구조 이해가 매우 중요
- 이 구분을 기준으로 WPF 컨트롤 트리 학습/정리하면 더 빠르게 체득 가능하다.
'프로그래밍&IT > C# (Winfrom, WPF)' 카테고리의 다른 글
| [WPF] Element Binding (4) | 2025.08.04 |
|---|---|
| [WPF] The Application (1) | 2025.08.04 |
| [WPF] Routed Events (1) | 2025.08.03 |
| [WPF] WPF의 기본 레이아웃 (Layout) (4) | 2025.08.03 |
| [Effective C#] Ch6. 그 외 것들 (2) safe code, CLS 규격 코드 작성하기, (0) | 2025.07.15 |