전체 글(233)
-
[WPF 실무 50편] WPF UI Virtualization 심화
VirtualizingStackPanel / Recycling / DataGrid 성능 최적화 완전 정리DataGrid에 데이터가 10,000개 있다고 해서 화면에 10,000개의 Row가 모두 만들어질 필요는 없습니다.현재 화면에 보이는 Row가 20개라면, WPF가 필요한 UI 컨테이너만 생성해서 보여주면 훨씬 효율적입니다.이 역할을 하는 것이 바로 UI Virtualization입니다.WPF에서 대용량 DataGrid, ListBox, ListView를 사용할 때 성능을 좌우하는 핵심 기능 중 하나입니다.이번 글에서는✔ UI Virtualization의 정확한 의미✔ Data Virtualization과의 차이✔ VirtualizingStackPanel 동작 원리✔ Standard vs Recycl..
2026.10.01 -
[WPF 실무 49편] WPF Freezable / Freeze 최적화 완전 정리
Brush / Geometry / Transform 성능 개선 방법WPF에서 Brush, Geometry, Transform 같은 객체를 많이 사용하다 보면메모리 사용량이 늘어나거나 렌더링 비용이 커질 수 있습니다.이때 활용할 수 있는 것이 바로 Freezable과 Freeze()입니다.WPF의 여러 그래픽 객체는 Freezable을 상속받습니다.대표적으로:BrushTransformGeometryDrawingAnimation등이 있습니다.이 객체들은 더 이상 변경할 필요가 없다면 Freeze()를 호출해 불변 객체처럼 고정할 수 있습니다.이번 글에서는✔ Freezable이란 무엇인지✔ Freeze()를 사용하는 이유✔ 어떤 객체를 Freeze할 수 있는지✔ CanFreeze 사용법✔ 공유 리소스와 성능 ..
2026.09.29 -
[WPF 실무 48편] WPF 렌더링 구조 완전 정리 (CPU / GPU / Hardware Acceleration)
WPF 프로그램을 개발하다 보면 화면에 표시되는 컨트롤이 많아질수록 스크롤이 끊기거나, 실시간 그래프가 느려지고, 창 크기를 조절할 때 버벅이는 현상이 발생할 수 있습니다.이런 문제를 해결하려면 WPF가 화면을 어떻게 그리는지부터 이해해야 합니다.WPF는 DirectX 기반 렌더링을 지원하지만, 모든 작업을 GPU에서 처리하는 것은 아닙니다.레이아웃 계산과 UI 업데이트는 CPU에서 수행되며, 그래픽 렌더링과 합성 작업에는 GPU 가속이 활용될 수 있습니다.이번 글에서는 다음 내용을 실무 기준으로 정리합니다.WPF 렌더링 구조와 동작 원리Measure → Arrange → Render 과정UI Thread와 Render Thread의 차이CPU / GPU가 담당하는 작업RenderCapability.Ti..
2026.09.21 -
[WPF 실무 47편] WPF Drag & Drop 구현 완전 정리
컨트롤 이동 / 파일 드롭 / DataGrid Row 이동WPF 프로그램을 만들다 보면 마우스로 항목을 끌어서 다른 위치로 이동하거나,Windows 탐색기에서 파일을 끌어와 프로그램에 넣어야 하는 경우가 있습니다.이때 사용하는 것이 바로 Drag & Drop입니다.WPF에서는DragDrop.DoDragDrop()AllowDropDragEnterDragOverDrop이벤트를 이용해 Drag & Drop 기능을 구현할 수 있습니다.이번 글에서는✔ Drag & Drop 기본 구조✔ 컨트롤 드래그✔ 외부 파일 Drag & Drop✔ DataGrid Row 이동✔ DragDropEffects✔ 실무에서 자주 하는 실수를 정리합니다.1. WPF Drag & Drop 기본 구조Drag & Drop은 크게 두 영역으로..
2026.09.16 -
[WPF 실무 46편] WPF Preview 이벤트 vs Bubble 이벤트
실행 순서와 이벤트 차단 방법 완전 정리WPF 이벤트를 사용하다 보면 MouseDown과 PreviewMouseDown,KeyDown과 PreviewKeyDown처럼 비슷한 이벤트가 두 개씩 존재하는 경우가 많습니다.둘의 차이는 단순히 이름 앞에 Preview가 붙느냐의 문제가 아닙니다.핵심은Preview 이벤트 → 부모에서 자식 방향일반 이벤트 → 자식에서 부모 방향으로 전달된다는 점입니다.이번 글에서는✔ Preview 이벤트란 무엇인지✔ Bubble 이벤트와 실행 순서 차이✔ Handled로 이벤트를 차단하는 방법✔ TextBox / Button에서 실제로 발생하는 차이✔ 실무에서 자주 하는 실수를 정리합니다.1. Preview 이벤트란?WPF에서 Preview가 붙은 이벤트는 대부분 Tunnel 방..
2026.09.14 -
[WPF 실무 45편] WPF RoutedEvent 완전 이해 (Bubble / Tunnel 이벤트 구조)
WPF에서 버튼을 클릭했는데 부모 Grid의 이벤트까지 같이 실행되거나,반대로 이벤트를 등록했는데 예상한 컨트롤에서 실행되지 않는 경우가 있습니다.이런 현상을 이해하려면 WPF의 RoutedEvent 구조를 알아야 합니다.이번 글에서는✔ RoutedEvent란 무엇인지✔ Bubble / Tunnel / Direct 차이✔ Preview 이벤트가 필요한 이유✔ Handled 동작 방식✔ sender, Source, OriginalSource 차이✔ 실무에서 자주 하는 실수를 정리합니다.1. RoutedEvent란 무엇인가?일반적인 C# 이벤트는 이벤트를 발생시킨 객체에서만 처리합니다.하지만 WPF RoutedEvent는 Visual Tree를 따라 이벤트가 전달될 수 있습니다.예를 들어 다음 구조가 있다고..
2026.09.14