C# WPF
10. AsyncRelayCommand, AsyncRelayCommand<T>
10. AsyncRelayCommand, AsyncRelayCommand<T>
2025.04.071. 출처 및 참고자료더보기✔️ Microsoft Docs: AsyncRelayCommand 및 AsyncRelayCommand (공식 문서) 관련 네임스페이스: using CommunityToolkit.Mvvm.Input; 핵심 클래스AsyncRelayCommand 클래스IAsyncRelayCommand 인터페이스[AsyncRelayCommand] 소스 제너레이터 어트리뷰트 2. 개요더보기✔️ 작동 방식AsyncRelayCommand는 비동기 메서드(async Task)를 ICommand로 바인딩할 수 있도록 해주는 명령 클래스입니다.RelayCommand와 유사하지만, 내부에서 await를 안전하게 처리하며 UI가 멈추지 않도록 돕습니다.AsyncRelayCommand는 매개변수를 받는 비동기 명..
09 RelayCommand, RelayCommand<T>
09 RelayCommand, RelayCommand<T>
2025.04.071. 참고자료더보기✔️ Microsoft Docs: RelayCommand (공식 문서) 관련 네임스페이스using CommunityToolkit.Mvvm.Input; 2. 기능 개요더보기✔️ 작동 방식RelayCommand는 MVVM에서 ViewModel 내부의 메서드를 View의 버튼 클릭 이벤트 등에 바인딩하기 위한 기능입니다.ICommand 인터페이스를 자동으로 구현하는 소스 제너레이터 기반 기능입니다.[RelayCommand] 특성을 메서드에 붙이면, 해당 메서드를 호출하는 Command 속성이 자동 생성됩니다.RelayCommand는 **매개변수를 받는 명령(Command)**을 구현할 때 사용합니다. ✔️ 왜 필요한가?MVVM에서는 View에서 직접 메서드를 호출할 수 없기 때문에, ..
08. ObservableValidator
08. ObservableValidator
2025.04.071. 출처 및 참고자료더보기✔️ Microsoft Docs: ObservableValidator (공식문서) ObservableValidator는 INotifyDataErrorInfo를 구현하는 MVVM용 ViewModel 베이스 클래스입니다.이 클래스를 상속하고 .ValidateAllProperties() 또는 .ValidateProperty() 메서드를 호출하면, 속성의 데이터 유효성 검사가 자동으로 수행되며, View에서 실시간으로 오류 메시지를 수신할 수 있습니다. 관련 어노테이션: [ObservableProperty], [Required], [MinLength], [MaxLength], [EmailAddress] 등 2. 기능명 or 기능 개요더보기✔️ 작동 방식ObservableObject..
07. ObservableRecipient
07. ObservableRecipient
2025.04.041. 참고자료더보기✔️ Microsoft Learn / Learn / .NET / MVVM공유한 링크는 .NET Community Toolkit의 ObservableRecipient 클래스에 대한 문서입니다.이 클래스는 ObservableObject와 IRecipient를 결합하여 만든 ViewModel 전용 수신자 기반 클래스입니다.MVVM 아키텍처에서 메시지 기반 통신을 간편하게 사용할 수 있도록 도와줍니다. 2. ObservableRecipient 개요더보기✔️ 작동 방식 구성 요소설명MessengerWeakReferenceMessenger.Default로 메시지를 보내고 받음IsActivetrue일 때만 메시지를 수신할 수 있음 (디폴트: false)Receive(TMessage)메시지를 ..
06. ObservableObject
06. ObservableObject
2025.04.041. 참고자료더보기✔️ Microsoft Learn / Learn / .NET / MVVMObservableObject는 MVVM Toolkit에서 제공하는 MVVM의 핵심 클래스로INotifyPropertyChanged 인터페이스를 구현하고, 속성 변경을 View에 알리는 기능을 자동화해주는 베이스 클래스입니다.즉, ViewModel이 반드시 상속해야 하는 기본 클래스입니다. CommunityToolkit.Mvvm의 ObservableObject 기능은Observable하지 않은(Model이 INotifyPropertyChanged를 구현하지 않은) 기존 모델을 MVVM에 통합하는 핵심 기술입니다. ✔️ 소스 코드 2. ObservableObject 개요 더보기✔️ MVVM 구현 방식 비교 ..
04. RelayCommand
04. RelayCommand
2025.04.031. RelayCommand더보기✔️ Microsoft Learn / Learn / .NET / MVVM 이 문서는 [RelayCommand] 어트리뷰트를 사용해서CommunityToolkit.MVVM의 RelayCommand는 MVVM 아키텍처에서 UI에서 ViewModel의 메서드를 실행하도록 연결하는 복잡한 ICommand 구현을 자동으로 대체해주기 때문에 학습자들이 MVVM을 더 빠르게 익히고 적용할 수 있습니다. 2. RelayCommand 사용 예시더보기// MainViewModel 클래스는 MVVM 패턴에서 ViewModel 역할을 수행합니다.// ObservableObject를 상속받아 INotifyPropertyChanged를 자동으로 구현합니다.// CommunityToolki..
03. ObservableProperty
03. ObservableProperty
2025.04.021. ObservableProperty 더보기✔️ Microsoft Learn / Learn / .NET / MVVM 이 문서는 [ObservableProperty] 어트리뷰트를 사용해서MVVM 패턴의 핵심인 Property(속성) 변경 알림(INotifyPropertyChanged)을 자동으로 구현해서속성 값이 변경되었을 때 자동으로 실행되는 메서드를 정의하는 방법에 대한 내용입니. 2. ObservableProperty 사용 예시더보기// PersonViewModel 클래스는 MVVM 패턴에서 ViewModel 역할을 수행합니다.// ObservableObject를 상속받아 INotifyPropertyChanged를 자동으로 구현합니다.// CommunityToolkit.Mvvm의 Source ..
02. source generator
02. source generator
2025.04.021. Source Generator 더보기✔️ Microsoft Learn / Learn / .NET / MVVM CommunityToolkit.Mvvm 의 Source Generator 기능들에 대해 설명합니다.즉, 우리가 반복적으로 작성하던 MVVM 관련 코드를 자동으로 생성해주는 기능들을 제공합니다. 2. CommunityToolkit.Mvvm 을 사용한 예제더보기✔️ ViewModel 클래스 만들기using CommunityToolkit.Mvvm.ComponentModel;using CommunityToolkit.Mvvm.Input;using System.Windows;internal partial class MainViewModel : ObservableObject{ [Observa..
01. CommunityToolkit.Mvvm 설치법
01. CommunityToolkit.Mvvm 설치법
2025.04.021. CommunityToolkit.Mvvm 소개더보기Microsoft Learn / Learn / .NET / MVVM 2. NuGet 패키지 관리자에서 설치더보기솔루션 탐색기에서 프로젝트 우클릭 설치된 패키지 리스트가 기본 선택된다. NuGet 패키지 관리 찾기 탭에서 CommunityToolkit.Mvvm 입력 최신 안정 버전 선택 후 설치 버튼 클릭 설치된 패키지 확인 2. NuGet 패키지 관리자 콘솔에서 설치더보기1. Visual Studio 에서 패키지 관리자 콘솔 실행 방법1. Visual Studio 상단 메뉴에서 도구 → NuGet 패키지 관리자 → 패키지 관리자 콘솔 열기방법2. Visual Studio에서 ctrl + q 단축키 → Package Manag..
12. 이벤트
12. 이벤트
2025.04.02이벤트는 대리자와 같은 개념으로, 대리자를 이해한 후 이벤트를 학습해야 한다.이벤트가 대리자와 다른점은, 이벤트는 메서드 안에서만 호출해서 사용 가능하다는 점이다. 이벤트가 시작되는 로직과, 이벤트에 영향을 받아 동작하는 로직을 구분하는것이 먼저다. 아래 예제는, 버튼이 눌려지면, 레이블에 문자열이 수정되는 구조를 구현한다고 가정하자.eg) [버튼 클릭 > 이벤트(대리자)] > 레이블 수정 1. 이벤트 선언 방법이벤트는 대리자를 event 한정자로 수식해서 만든다.[ event 키워드 ] [ 대리자 ] [ 이벤트이름 ]; 2. 이벤트 선언의 목적위 예제 구조에서 구현된 이벤트는, 이벤트를 형태의 선언이 목적이 아니다.레이블의 수정이 목적이다.시작은 Button 객체의 click 함수의 실행목적..
11. 대리자
11. 대리자
2025.04.021. 참고 자료더보기1. 참고 링크MSDN 2. 학습목표 - 3. 학습순서Callback 개념과 Delegate 용어대리자를 사용하는 이유Delegate를 선언하고 사용하는 방법일반화 대리자를 사용하는 방법Multicast Delegete (대리차 체인) 4. 대리자 사용 목적메서드를 변수처럼 사용하기 위해이벤트 처리메서드 호출을 런타임에 동적으로 변경할 때코드의 결합도 낮춤 (느슨한 결합, Loosely Coupled) 여러 개의 메서드를 하나의 대리자에 연결, 한 번에 실행 가능LINQ, 람다 표현식에서의 활용비동기 호출 (BeginInvoke/EndInvoke) 2. 대리자 사용법더보기1. 기본 문법// 반환형과 매개변수 목록을 포함한 선언// 함수 헤더에 delegate 로 수식하면 된..
10. SOLID - ISP
10. SOLID - ISP
2025.04.021. SOLID 원칙더보기1. SOLID OOP, 객체 지향 프로그래밍 설계의 기본 원칙 SOLID Eng.Kor.SRPSingle Responsibility Principle단일 책임 원칙OCPOpen-Closed Principle개방-폐쇄 원칙 LSPLiskov Substitution Principle리스코프 치환 원칙 ISPInterface Segregation Principle인터페이스 분리 원칙DIPDependency Inversion Principle의존성 역전 원칙 2. 인터페이스 분리 원칙(ISP, Interface Segregation Principle)더보기Many client-specific interfaces are better than one general-purpose inter..