All Pages
1. CommunityToolkit.Mvvm
1. CommunityToolkit.Mvvm
2025.05.01
6.1 AsyncRelayCommand, AsyncRelayCommand<T>
6.1 AsyncRelayCommand, AsyncRelayCommand<T>
2025.04.291. 출처 및 참고자료더보기📚 Microsoft Docs: AsyncRelayCommand 및 AsyncRelayCommand 관련 네임스페이스: using CommunityToolkit.Mvvm.Input; 핵심 클래스AsyncRelayCommand 클래스IAsyncRelayCommand 인터페이스[AsyncRelayCommand] 소스 제너레이터 어트리뷰트 2. 개요더보기✔️ 작동 방식AsyncRelayCommand는 비동기 메서드(async Task)를 ICommand로 바인딩할 수 있도록 해주는 명령 클래스입니다.RelayCommand와 유사하지만, 내부에서 await를 안전하게 처리하며 UI가 멈추지 않도록 돕습니다.AsyncRelayCommand는 매개변수를 받는 비동기 명령을 처리합니다..
06. AsyncRelayCommand<T>
06. AsyncRelayCommand<T>
2025.04.291️⃣ AsyncRelayCommand 개요더보기📚 Microsoft Docs: AsyncRelayCommand ✅ AsyncRelayCommand 개요 MVVM에서 비동기 작업을 Command로 실행하기 위해 사용하는 구조입니다.여기서 는 CommandParameter로 전달될 인자의 타입입니다. ✅ 사용 예시 문제 상황해결 방법 버튼 클릭 시 API 요청, 파일 다운로드 등 시간이 걸리는 작업이 필요async/await로 비동기 처리ViewModel에서 Command 방식으로 비동기 로직 호출AsyncRelayCommand 사용작업 중 중복 실행 방지내부적으로 IsRunning 상태 추적 가능예외 처리를 깔끔하게 하고 싶음Try/Catch로 비동기 에러 관리 가능 ✅ RelayCommand에..
05.4 NotifyCanExecuteChanged
05.4 NotifyCanExecuteChanged
2025.04.29✅ 5. 다양한 사용법① 조건이 자주 바뀌는 경우 → NotifyCanExecuteChanged[RelayCommand(CanExecute = nameof(CanSubmit))]private void Submit() { }private bool CanSubmit() => IsChecked && !string.IsNullOrEmpty(InputText);private bool isChecked;public bool IsChecked{ get => isChecked; set { SetProperty(ref isChecked, value); SubmitCommand.NotifyCanExecuteChanged(); }}NotifyCanExecuteChanged()를..
05.3 CanExecute
05.3 CanExecute
2025.04.291️⃣ CanExecute 개요더보기📚 Microsoft Docs: Microsoft CommunityToolkit MVVM - ObservableProperty ✅ CanExecute 개요 CanExecute는 WPF의 ICommand 인터페이스에서 제공하는 기능으로,명령(Command)이 실행 가능한지 여부를 판단하는 조건부 로직입니다. ✅ 사용 예시 상황 예시 입력이 없을 때 버튼 비활성화이름 입력이 없으면 “인사” 버튼 비활성화처리 중 중복 실행 방지비동기 작업 중 같은 버튼 눌리지 않게 막기조건이 맞을 때만 실행체크박스가 체크될 때만 삭제 버튼 활성화 등 ✅ RelayCommand에 CanExecute 연동하는 방법 [RelayCommand(CanExecute = nameof(CanGree..
06.1 CommandParameter
06.1 CommandParameter
2025.04.29RelayCommand는 MVVM 구조에서 메서드(Logic)를 실행하는 방법 입니다. CommandParameter는 RelayCommand에 "매개변수"를 전달해 메서드(Logic)를 실행하는 방법 입니다. 1️⃣ CommandParameter 개요더보기📚 Microsoft Docs: CommunityToolkit.Mvvm.Input.RelayCommand ✅ CommandParameter 개요XAML에서 Button, MenuItem, ListBoxItem 등의 컨트롤이 명령(Command)을 실행할 수 있습니다.CommandParameter는 이때 추가적인 데이터를 전달하는 속성입니다.MVVM에서는 View와 ViewModel이 직접 연결되지 않도록 하기 위해, 이벤트 기반의 직접 호출 대신..
06. Generic Parameter
06. Generic Parameter
2025.04.29RelayCommand는 MVVM 구조에서 메서드(Logic)를 실행하는 방법 입니다. CommandParameter는 RelayCommand에 "매개변수"를 전달해 메서드(Logic)를 실행하는 방법 입니다. 1️⃣ RelayCommand 개요더보기 📚 Microsoft Docs: RelayCommand Generator ✔️ RelayCommand 개요RelayCommand는 View에서 ViewModel 메서드를 실행해야 할 때, 매개변수를 전달 하기 위해 사용합니다.CommandParameter는전달되는 인자의 타입을 명확히 지정할 수 있는 제네릭 버전의 명령(Command)입니다. ✔️ 왜 필요한가?CommandParameter="{Binding}"로 객체를 전달할 때,object로 ..
05. RelayCommand
05. RelayCommand
2025.04.29RelayCommand는 MVVM 구조에서 메서드(Logic)를 실행하는 방법입니다.Relay(중계자) = 바통을 넘기다, 전달하다 → "동작(명령)을 전달(delegate)하는 역할"(View)Command → RelayCommand → (ViewModel)Method 1️⃣ RelayCommand 개요더보기 📚 Microsoft Docs: CommunityToolkit.Mvvm.Input.RelayCommand ✅ 작동 방식 CommunityToolkit.Mvvm.Input.RelayCommand의 [RelayCommand] 어트리뷰트는ICommand 인터페이스를 자동으로 구현해주는 소스 생성기(SG) 기반 기능입니다. [RelayCommand] 어트피뷰트를 메서드에 붙이면 해당 메서드를 실행..
07.4 ObservableRecipient - 예제4
07.4 ObservableRecipient - 예제4
2025.04.231️⃣ ObservableRecipient 예제4. 시나리오더보기✔️ 1. 동작 시나리오MainWindow 리스트에서 항목을 선택하고상세 보기 버튼을 누르면 DetailWindow 에서 선택한 학생의 상세정보와 함께 실행됩니다.이름과 나이를 수정하고정보 반환 버튼을 누르면수정된 내용이 MainWindow 리스트에 반영됩니다. 2️⃣ 프로젝트 구조더보기📁 프로젝트 구조ProjectName/├── Messages/│ └── StudentSelectedMessage.cs├── Models/│ └── Student.cs├── ViewModels/│ ├── MainViewModel.cs│ └── DetailViewModel.cs│ └── LogViewModel.cs├── Views/│ ├─..
07.3 ObservableRecipient - 예제3
07.3 ObservableRecipient - 예제3
2025.04.231️⃣ ObservableRecipient 예제3. 시나리오더보기✔️ 1. 동작 시나리오MainWindow 리스트에서 항목을 선택하고상세 보기 버튼을 누르면 DetailWindow 에서 선택한 학생의 상세정보와 함께 실행됩니다.로그 보기 버튼을 누르면 LogWindow 에서 로그 기록을 보여줍니다. 2️⃣ 프로젝트 구조더보기📁 프로젝트 구조ProjectName/├── Messages/│ └── StudentSelectedMessage.cs├── Models/│ └── Student.cs├── ViewModels/│ ├── MainViewModel.cs│ └── DetailViewModel.cs│ └── LogViewModel.cs├── Views/│ ├── MainView.xaml..
07.2 ObservableRecipient - 예제2
07.2 ObservableRecipient - 예제2
2025.04.231️⃣ ObservableRecipient 예제2. 시나리오더보기✔️ 1. 동작 시나리오MainWindow 리스트에서 항목을 선택하고상세보기 버튼을 누르면DetailWindow 에서 선택한 학생의 상세정보와 함께 실행됩니다. 2️⃣ 프로젝트 구조더보기📁 프로젝트 구조ProjectName/├── Messages/│ └── StudentSelectedMessage.cs├── Models/│ └── Student.cs├── ViewModels/│ ├── MainViewModel.cs│ └── DetailViewModel.cs├── Views/│ ├── MainView.xaml│ └── DetailView.xaml├── App.xaml└── App.xaml.cs3️⃣ Message 구현더..
07.1 ObservableRecipient - 예제1
07.1 ObservableRecipient - 예제1
2025.04.231️⃣ ObservableRecipient 예제1. 시나리오더보기✔️ 1. 시나리오 버튼을 누르면새창이 열림문자열을 입력하고버튼을 누르면 ViewModel 간 메시지를 주고받음MainViewModel이 메시지를 보내고, DetailViewModel이 받음 2️⃣ 프로젝트 구조더보기📁 프로젝트 구조ProjectName/├──📁Messages/│ └── NameChangedMessage.cs├──📁ViewModels/│ ├── MainViewModel.cs│ └── DetailViewModel.cs├──📁Views/│ ├── MainView.xaml│ └── DetailView.xaml├── App.xaml└── App.xaml.cs3️⃣ Message 구현더보기📁 Message..