WPF

1. 기본 개념 (기초 다지기)

  • WPF 개요 및 철학: WinForms와 비교, WPF의 렌더링 방식, XAML의 개념
  • XAML 언어 기초: XAML 문법, 네임스페이스, 기본 문법 요소
  • WPF 아키텍처 이해: Logical Tree와 Visual Tree 개념, 렌더링 파이프라인
  • MVVM 패턴 소개: View-ViewModel-Model의 역할, MVVM를 통한 코드 구조화
  • WPF의 장단점 및 활용 사례: 왜 WPF를 사용하는가, 어떤 프로젝트에 적합한가

2. 컨트롤 및 사용자 정의 UI

  • 기본 컨트롤 이해: Button, TextBox, CheckBox, ComboBox 등 기본 컨트롤 사용법
  • 사용자 정의 컨트롤: UserControl로 UI 재사용하기, CustomControl로 템플릿 기반 확장하기
  • Behavior와 Attached Property: UI 동작을 모듈화하고 재사용하기
  • Interaction 기초: EventTrigger, Action 등을 활용한 선언적 이벤트 처리 (개별 토픽으로 상세화 가능)

3. 레이아웃 시스템

  • 레이아웃 개념: 측정(Measure)과 배치(Arrange) 과정 이해
  • 레이아웃 컨테이너: Grid, StackPanel, DockPanel, WrapPanel, Canvas 비교 및 활용
  • 반응형 UI 구성: 화면 크기 변화 대응, 스크롤 처리
  • 레이아웃 성능 최적화: 불필요한 레이아웃 재계산 방지

4. 데이터 바인딩

  • 바인딩 개념: OneWay, TwoWay, OneTime 등 바인딩 모드
  • DependencyProperty & INotifyPropertyChanged: MVVM 구현을 위한 핵심 요소
  • ItemsControl & DataTemplate: 리스트, 그리드 데이터 표시를 위한 템플릿 사용
  • ValueConverter: 데이터 변환을 통한 표시 로직 분리
  • Data Validation: 유효성 검사와 에러 템플릿

5. 스타일링 및 템플릿

  • 스타일 적용: Control의 공통 속성 정의, Style Inheritance
  • ControlTemplate: 컨트롤 외형 재정의, Lookless Control 개념
  • DataTemplate 심화: 데이터 유형별 UI 정의
  • VisualStateManager & Triggers: 상태에 따른 UI 변화, 애니메이션 결합

6. 이벤트 및 명령

  • RoutedEvent 이해: Bubbling, Tunneling, Direct Event
  • 명령(Command) 패턴: ICommand 인터페이스, RelayCommand, DelegateCommand 구현
  • 커스텀 명령 등록: CommandBinding 활용, ContextMenu Command
  • Event, Command 혼합 전략: XAML에서 Command와 이벤트 연결

7. 그래픽 및 애니메이션

  • WPF 그래픽 렌더링: 벡터 그래픽, DPs, DPI 인식
  • Shape, DrawingVisual: 도형 그리기, 직접 렌더링
  • 애니메이션 기본: Storyboard, DoubleAnimation, KeyframeAnimation
  • 고급 애니메이션: 경로 애니메이션, 복잡한 시퀀싱 및 트리거

8. 리소스 및 테마

  • StaticResource / DynamicResource: 리소스 조회 방식
  • ResourceDictionary: 글로벌 리소스 관리
  • 다중 테마 지원: 스킨 변경, 런타임 테마 전환
  • Application-Level Resources: 전역 리소스 관리와 구조화

9. 멀티미디어 및 문서

  • MediaElement 사용: 동영상/음성 재생
  • 이미지 처리: BitmapImage, Image 컨트롤, DecodeOptions
  • FlowDocument 및 문서 처리: 가변 크기 텍스트 표시, 인쇄, 문서 내보내기
  • Printing API: WPF의 인쇄 기능 및 인쇄 대화상자

10. 데이터 및 파일 I/O

  • 데이터 소스 연동: XML, JSON, 데이터베이스 연계
  • 데이터 가상화: 대량 데이터 처리 최적화
  • 드래그 앤 드롭: 파일 및 데이터 이동 처리
  • 파일 대화상자: OpenFileDialog, SaveFileDialog 활용

11. 성능 최적화

  • 렌더링 성능 개선: BitmapCache, Tier 확인
  • VirtualizingPanel: ListView, DataGrid 성능 최적화
  • 비동기 데이터 로딩: BackgroundWorker, Task, Async/await 활용
  • 메모리 관리: GC, 대형 객체 핸들링, Freezable 객체 활용

12. WPF 애플리케이션 관리

  • Application 클래스 이해: 애플리케이션 생명주기, 시작/종료 이벤트
  • Dispatcher 이해: UI 스레드 처리, Invoke, BeginInvoke
  • UnhandledException 처리: 안정적 애플리케이션 유지
  • 멀티 윈도우 관리: 다중 창, Dialog, Modal/Modeless 윈도우

13. 고급 기능

  • DependencyProperty 심화: Custom DP, 메타데이터, PropertyChangedCallback
  • Freezable 객체: 불변 객체 활용으로 성능/메모리 최적화
  • VisualTreeHelper & LogicalTreeHelper: 트리 탐색, UI 디버깅 기법
  • 고급 Behavior/Trigger 활용: 복잡한 상호작용 로직 캡슐화

14. 외부 기술 및 프레임워크 통합

  • WinForms 호환: WindowsFormsHost 사용
  • COM Interop: 기존 COM 구성 요소 활용
  • DirectX 연동: 고급 그래픽 및 게임 개발 시나리오
  • Prism, Caliburn.Micro 등 프레임워크: 대규모 앱 아키텍처 지원

15. 테스트와 디버깅

  • XAML 디버깅 기법: Break on Unhandled Exceptions, XAML Spy
  • Visual Tree 디버깅: Snoop, Live Visual Tree 활용
  • 데이터 바인딩 디버깅: 바인딩 에러 처리, Trace
  • 단위 테스트, UI 테스트: MVVM 기반 유닛테스트 전략, UI 자동화 도구

16. 배포 및 배포 관리

  • 배포 방식: ClickOnce, MSI, Standalone EXE
  • WPF와 .NET Core: 최신 .NET 환경에서의 WPF 배포 전략
  • 업데이트 관리: 앱 업데이트, 버전 관리
  • 코드 서명 및 보안 고려: 신뢰성 있는 배포

Table of Contents