WPF UI 프레임워크 MaterialDesign 적용 사례
최근 회사에서 데스크톱 클라이언트 개발이 필요해 스타일 및 인터페이스 피드백에 대한 요구사항을 충족시키기 위해 여러 오픈소스 UI 프레임워크를 비교한 결과 MaterialDesign을 선택하였다.
MaterialDesignThemes 라이브러리 포함 작업 시 버전 번호를 주의 깊게 확인해야 한다. 현재 사용 중인 버전은 2.6.0이며, 동영상 튜토리얼에서 이 버전을 기준으로 진행되었 ...
6월 11일 22:03에 게시됨
WPF에서 프린터 연결 및 인쇄 기능 구현
프로젝트 설정
WPF 프로젝트 생성
dotnet new wpf -n WpfPrintSolution
cd WpfPrintSolution
필요 어셈블리 참조 추가
System.Printing (프린터 관리)
PresentationFramework (UI 컨트롤)
UI 디자인 (MainWindow.xaml)
<Window x:Class="WpfPrintSolution.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x= ...
6월 11일 16:20에 게시됨
WPF 및 C#에서 효율적인 싱글톤 패턴 구현 방법
WPF(Windows Presentation Foundation) 애플리케이션 개발 시, 특정 데이터나 상태를 애플리케이션 전역에서 공유해야 할 때가 많습니다. 이때 가장 널리 사용되는 디자인 패턴이 싱글톤(Singleton) 패턴입니다. 싱글톤 패턴은 클래스의 인스턴스를 단 하나만 생성하도록 보장하여 메모리 낭비를 줄이고 데이터의 일관성을 유지하는 데 도움을 줍니다.
1. 기본적인 싱글톤 ...
6월 10일 01:50에 게시됨
WPF 컨트롤 템플릿의 핵심 개념과 활용
로직 트리와 뷰 트리 이해하기
로직 트리는 애플리케이션에 추가된 요소들의 계층 구조를 의미합니다. 이 구조는 속성 상속, 이벤트 전파, 스타일 적용 등의 기능을 지원합니다. 반면 뷰 트리는 로직 트리를 세분화한 형태로, 각 컨트롤은 내부적으로 여러 하위 요소로 구성됩니다. 예를 들어 버튼은 단순한 박스가 아니라 ButtonChrome, ContentPresenter, TextBlock 등으 ...
6월 9일 16:47에 게시됨
WPF에서 아이콘 버튼 구현 방법
아이콘과 텍스트를 결합한 버튼을 구현할 경우 일반적으로 버튼 템플릿을 재정의하는 방식을 사용합니다. 하지만 일반화된 구현을 원한다면 두 가지 방법이 있습니다:
부착 속성(Attached Property) 활용
커스텀 컨트롤 개발
부착 속성을 사용하는 방식이 추천됩니다.
1단계: 부착 속성 방식
IconButtonHelper라는 클래스에 Button 타입에 대한 부착 속성을 정의합니다:
...
6월 7일 20:06에 게시됨
Qt UI와 WPF XAML의 레이아웃 설계 철학 비교
현대적인 GUI 애플리케이션 개발에서 사용자 인터페이스(UI)를 코드와 분리하여 정의하는 방식은 표준으로 자리 잡았습니다. 과거 WinForm 환경에서는 코드가 UI 설계와 밀접하게 얽혀 있었지만, Qt와 WPF는 XML 기반의 선언적 언어를 도입하여 레이아웃과 비즈니스 로직을 깔끔하게 분리합니다.
1. 선언적 UI 정의의 핵심 가치
UI 정의 파일을 분리하면 마치 건 ...
6월 4일 20:27에 게시됨
C# WPF에서 {x:Reference} 이해하기
{x:Reference}는 XAML에서 사용하는 마크업 확장(Markup Extension) 중 하나로, 다른 이름이 지정된 XAML 요소에 대한 참조를 얻는 데 사용됩니다.
기본 구문
{x:Reference 요소이름}
1. 다른 요소의 속성 바인딩 시 활용
일반적으로 {x:Reference}는 ElementName을 대체하여 사용됩니다.
<StackPanel>
<Slider x:Name="mainSlider" Minimum=" ...
6월 3일 23:48에 게시됨
C#에서 UI 스레드 예약과 우선순위 제어 기법
UI 스레드의 메시지 처리와 스케줄링 원리
현대 데스크탑 애플리케이션은 사용자 인터페이스의 반응성에 크게 의존한다. 하지만 백그라운드 스레드가 UI 요소를 업데이트해야 할 때, 주요 문제는 발생한다: UI 컨트롤은 생성된 스레드만 접근 가능하다. C#에서는 WPF와 WinForms을 통해 이 문제를 해결하는 다양한 메커니즘을 제공한다. 본 문서에서는 두 플랫폼의 스레드 ...
6월 3일 19:53에 게시됨
C# WPF에서 UserControl을 Label로 교체 시 발생하는 동작 차이
UserControl:
Label:
인터페이스를 확대하면 표시됩니다: 하지만 양쪽(Label과 ListBox 크기가 동기화되지 않음)
UserControl을 사용할 때 크기는 동기화됩니다:
관찰한 현상은 정확합니다 - UserControl을 Label로 교체한 후 인터페이스는 기본적으로 동일합니다. 이는 특정 시나리오에서 Label이 UserControl을 대체할 수 있음을 의미하지만, 이에는 특정 이유와 제약 ...
6월 1일 04:06에 게시됨
WPF 프로젝트에 MahApps.Metro UI 프레임워크 통합하기
MahApps.Metro 프레임워크 개요 및 설계 원칙
WPF 애플리케이션의 사용자 인터페이스를 현대적이고 세련된 스타일로 업그레이드할 수 있는 MahApps.Metro 라이브러리의 기본 적용 방법을 살펴봅니다. 이 프레임워크를 활용할 때 기억해야 할 핵심 아키텍처 원칙은 XAML 뷰가 코드 비하인드(Code-Behind)를 직접 참조하지 않고, 코드 비하인드가 XAML을 참조해야 한다는 점 ...
5월 31일 06:28에 게시됨