본문 바로가기
프로그래밍&IT/C# (Winfrom, WPF)

[WPF] Controls

by 성장의 용 2025. 8. 4.
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 컨트롤 트리 학습/정리하면 더 빠르게 체득 가능하다.