[년도:] <span>2025년</span>

[년도:] 2025년

[WPF] INotifyDataErrorInfo – 사용자 입력 값 검증

이번 글에서는 INotifyDataErrorInfo에 대해 알아보겠습니다. INotifyDataErrorInfo는 사용자 입력 값을 검증하기 위한 인터페이스로 ViewModel에서 데이터 검증 오류를 UI에 알리는 방식을 제공하는 인터페이스입니다. 이 인터페이스를 사용하면 속성에 오류가 생겼을 때 UI에 알려주고 …

[C#] lock

이번 글에서는 lock에 대해 알아보겠습니다. lock은 공유 리소스에 대한 단독 액세스를 보장하는 문입니다. 아래와 같이 공유된 리소스에 두 개의 쓰레드가 동시에 접근한다고 가정해봅시다. 당연히 현재 값에서 1을 증가 시켰으니 temp …

[C#] checked, unchecked

C#의 checked와 unchecked 문은 오버플로우 검사 여부를 제어하는 키워드입니다. 정수 계산에서 값이 자료형의 범위를 벗어날 때 예외를 던질지, 그냥 넘어갈 지를 결정합니다. 정수 계산에서 오버플로우가 발생하면 System.OverflowException이 throw됩니다. 기본 명령문은 …

[WPF] TreeView

WPF에서 TreeView를 사용하는 방법에 대해 알아보겠습니다. 생각보다 많은 것을 지원해주지 않아서 빠르게 알아보겠습니다. 만들어 볼 예제는 Folder, File 구조이고, MainWindow.xaml에 아래와 같이 입력하겠습니다. 그 다음 MainWindowViewModel.cs를 만들어 아래와 같이 입력하겠습니다. …

[WPF] ScrollViewer

WPF 개발을 하다 보면 창에 표현되는 내부 UI가 창의 크기를 넘어가는 화면을 만들 때가 있습니다. 이럴 때 내부의 UI 크기는 그대로 두면서 스크롤이 필요해지는 상황이 생기는데 그 때 ScrollViewer를 사용하면 …

[WPF] DispatcherTimer MVVM 패턴으로 사용하기

이번 글에서는 DispatcherTimer에 대해 알아보겠습니다. DispatcherTimer는 간단한 수준의 주기적인 작업을 할 때 사용하는 타이머입니다. WPF에서 Thread, Task를 사용하면 주기적인 작업을 할 수 있지만 간단한 수준의 반복 작업이나, UI만 갱신하는 경우에는 …

[WPF] TabControl

TabControl은 여러 화면을 하나의 화면에서 볼 때 사용하는 컨트롤입니다. 예를 들어 설정, 로그, 정보 같은 화면을 각각 구성하는데 하나의 화면에서 보고 싶으면 TabControl을 사용하시면 좋습니다. 이번 글에서는 MVVM 패턴으로 TabControl을 …

[WPF] Task

C#에서 비동기 프로그래밍을 하다 보면 Task를 사용하는 경우가 있습니다. Task는 ‘작업 단위‘를 의미하며 ‘실행할 작업을 나타내는 객체‘ 입니다. C#에서는 어떤 일을 비동기로 수행하려고 할 때 그 작업을 감싸는 틀이 Task입니다. …