All Pages
16. INavigationService
16. INavigationService
2025.04.181. INavigationService 개요더보기✔️ INavigationService INavigationService 인터페이스 기반으로 ViewModel 간 탐색이 가능한 구조로 확장INavigationService를 정의하고 NavigationService에서 SubWindow 열기 기능 구현MainViewModel에 INavigationService를 생성자 주입App.xaml.cs에서 IoC 컨테이너에 .AddSingleton() 등록이렇게 하면 ViewModel은 UI(Window)를 직접 알 필요 없이 Navigation 요청만 수행하므로 MVVM 원칙을 더욱 충실히 구현 📁 최종 WPF MVVM 프로젝트 구조WPF_INavigationService01/├── Messages/│ ..
15. Singleton 주입 → DependencyInjection
15. Singleton 주입 → DependencyInjection
2025.04.181. DependencyInjection 개요더보기✔️ Singleton 주입Logger 같은 전역 서비스(Singleton)를 ViewModel에 안전하게 주입하여 사용합니다.MVVM에서 Logger.Instance를 직접 참조하지 않고, 인터페이스 기반으로 느슨한 결합을 유지합니다. ✔️ "Singleton 주입"을, DependencyInjection 기반으로 확장 App.xaml.cs에서 DI 컨테이너를 구성하고,ILoggerService를 싱글톤으로 등록해 MainViewModel, SubViewModel에 자동으로 주입됩니다.App.xaml.cs에서 ServiceCollection을 구성하고 ILoggerService, MainViewModel, SubViewModel을 등록MainWindo..
14. Messenger
14. Messenger
2025.04.181. Singleton 주입 개요더보기✔️ Singleton 주입 사용 목적Logger 같은 전역 서비스(Singleton)를 ViewModel에 안전하게 주입하여 사용합니다.MVVM에서 Logger.Instance를 직접 참조하지 않고, 인터페이스 기반으로 느슨한 결합을 유지합니다. ✔️ + Messenger 추가View 간 메시지 통신이 가능하도록 CommunityToolkit.Mvvm.Messaging을 사용한 구조를 추가합니다.LogUpdateMessage 메시지를 정의하여 MainWindow와 SubWindow 간 로그 내용을 실시간 공유합니다.WeakReferenceMessenger.Default.Send(...)를 통해 로그 변경 시 다른 ViewModel에게 전달합니다.Register로..
13. Singleton 주입
13. Singleton 주입
2025.04.181. Singleton 주입 개요더보기✔️ 사용 목적Logger 같은 전역 서비스(Singleton)를 ViewModel에 안전하게 주입하여 사용합니다.MVVM에서 Logger.Instance를 직접 참조하지 않고, 인터페이스 기반으로 느슨한 결합을 유지합니다. ✔️ 소스코드 2. 예제1 - Window 1개더보기 📁 Services 구현WPF_Singleton04_01MVVM/ ├── Services/ │ ├── ILoggerService.cs │ └── Logger.cs ← Singleton 구현//├── ViewModels///│ └── MainViewModel.cs//├── Views///│ └── MainWindow.xaml//│ └── M..
12. Singleton Pattern
12. Singleton Pattern
2025.04.181. 참고자료더보기✔️ Microsoft Docs: 디자인 패턴: 싱글톤 | Microsoft Learn 2. Singleton Pattern 개요더보기✔️ 핵심 개념클래스의 인스턴스를 오직 1개만 생성하도록 제한정적 메서드(Instance, GetInstance()) 를 통해 접근일반적으로 생성자를 private으로 제한하여 외부에서 직접 생성하지 못하게 함 🟢 장점:자원 낭비 방지 (ex: DB 연결, 설정 로딩 등)전역 상태 유지 (한번 생성된 인스턴스를 재사용)스레드 동기화로 안정성 향상 가능 🔴 단점:전역 상태 → 테스트 어려움의존성 주입(DI)과 충돌할 수 있음멀티스레드 환경에서는 구현 시 주의가 필요 3. Singleton 예제더보기📁 프로젝트 구조SingletonPatter..
11. IServiceProvider - Ioc(제어 반전)
11. IServiceProvider - Ioc(제어 반전)
2025.04.181. 출처 및 참고자료더보기✔️ Microsoft Docs: MVVM Toolkit IoC 관련 네임스페이스:using CommunityToolkit.Mvvm.DependencyInjection; 학습 목표 IoC를 사용한 구조와 사용하지 않은 구조를 단계별 비교한다.Service, ViewModel, App.xaml.cs, MainWindow.xaml을 모두 작성한다.최종적으로 WPF MVVM 프로젝트에서 IoC가 왜 중요한지 체험한다. 2. 기능명: Ioc.Default, IServiceProvider더보기✔️ Inversion of Control (제어의 역전)란?객체의 생성과 관계 설정을 개발자가 직접 하지 않고, IoC 컨테이너가 대신 처리함IoC를 통해, 객체 생성을 프레임워크에 위임하여 의..
03.3 INotifyPropertyChanged
03.3 INotifyPropertyChanged
2025.04.181️⃣ INotifyPropertyChanged더보기 📚 Microsoft Learn / Learn / .NET / MVVM ✅ [INotifyPropertyChanged] 개요 클래스에 INotifyPropertyChanged 인터페이스를 자동 구현하게 해주는 '어트리뷰트' 입니다.INotifyPropertyChanged 인터페이스와 다릅니다. ✅ [INotifyPropertyChanged] 사용 예시[INotifyPropertyChanged]public partial class MyViewModel{ public string Name { get; set; }} ✅ [ObservableProperty] 비교public partial class MyViewModel : ObservableO..
03.2 ObservableValidator
03.2 ObservableValidator
2025.04.181. 출처 및 참고자료더보기✔️ Microsoft Docs: ObservableValidator (공식문서) ObservableValidator는 INotifyDataErrorInfo를 구현하는 MVVM용 ViewModel 베이스 클래스입니다.이 클래스를 상속하고 .ValidateAllProperties() 또는 .ValidateProperty() 메서드를 호출하면, 속성의 데이터 유효성 검사가 자동으로 수행되며, View에서 실시간으로 오류 메시지를 수신할 수 있습니다. 관련 어노테이션: [ObservableProperty], [Required], [MinLength], [MaxLength], [EmailAddress] 등 2. 기능명 or 기능 개요더보기✔️ 작동 방식ObservableObject..
03.1 ObservableObject
03.1 ObservableObject
2025.04.181️⃣ ObservableProperty 개요더보기 📚 Microsoft Docs: Microsoft CommunityToolkit MVVM - ObservableObject ✅ ObservableProperty 개요ObservableObject는 MVVM Toolkit에서 제공하는 MVVM의 핵심 클래스입니다.ObservableObject는 INotifyPropertyChanged, INotifyPropertyChanging 인터페이스가 구현되어 있습니다.즉, MVVM 구조에서 Observable하지 않은 기존 객체를 MVVM에 통합하는 핵심 기술입니다. ✅ ObservableProperty 사용법ㅇ ✅ 예제 소스 코드 2️⃣ 비교 ( 전통적 구현 vs ObservableObject vs..
5. 인터페이스와 추상 클래스
5. 인터페이스와 추상 클래스
2025.04.02
1. 프로그래밍 학습 관점
1. 프로그래밍 학습 관점
2025.03.301. 목적→ "프로그래밍 언어"와 "개발 기술"은 프로그램을 만들기 위한 것입니다.더보기프로그래밍은 학생, 초보자, 신입를 고려한 교육과 학문의 영역이 아닙니다. "프로그래밍"은 '프로그램'을 만들기 위해 등장했습니다.그리고 좀 더 효율적으로 프로그램을 만들기 위해, 기술을 개선하고, 새로운 기술이 등장합니다. 여러분이 배워야 할 프로그래밍 기술은 "현장의 개발자"를 위한 참고자료 입니다.안타깝지만, 프로그래밍은 여러분이 접하는 모든 프로그래밍 자료는 초보자를 위한 것이 아닙니다. 2. 을 만들어야 합니다.→ 이론 학습 >> 실습 >> 체득더보기- 프로그래밍 문법은, 실제 프로그램을 만드는 방법이 아닙니다. 영어 문법만 열심히 공부했다고 해서, 영어 소설을 쓰고, 영어 에세이를 쓰고, 영어 연설을..
12. Command - CanExecute
12. Command - CanExecute
2025.03.281. View (1단계) 더보기 Title="ICommand Example" Height="100" Width="300"> 2. ViewModel (1단계)더보기public class MainViewModel{ // // 사용자로부터 입력받은 텍스트를 저장하는 프로퍼티입니다. // private string _inputText; public string InputText { get => _inputText; ..