WPF
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 배포 전략
- 업데이트 관리: 앱 업데이트, 버전 관리
- 코드 서명 및 보안 고려: 신뢰성 있는 배포