재사용 가능한 MVVM 구조에서 명령 구현
최근 MVVM 구현에서는 여러 명령에 대한 필요성이 대두되었습니다. 단일 ICommand 클래스를 만드는 지루한 프로세스를 완화하기 위해 대체 접근 방식이 고안되었습니다. 그러나 그 효과와 잠재적인 개선점은 아직 논의되지 않았습니다.
제안된 솔루션: 일반 ICommand
명령 생성을 통합하기 위해 대리자를 사용하여 실행 가능한 기능을 실행하고 구현하는 일반 ICommand 클래스가 도입되었습니다. 이 ICommand의 생성자에는 두 개의 대리자 메서드가 할당됩니다. 그런 다음 ICommand 메서드는 대리자 메서드를 호출합니다.
기능이 작동하는 동안 이 접근 방식이 모범 사례와 일치하는지 아니면 더 적합한 솔루션이 존재하는지에 대한 의문이 제기됩니다.
대안: RelayCommand
Karl Shifflet이 보여준 것처럼 가장 권장되는 방법 중 하나는 RelayCommand입니다. 호출 시 수행되는 작업을 정의합니다.
RelayCommand 구현 예:
<code class="language-csharp">public class RelayCommand : ICommand { private readonly Predicate<object> _canExecute; private readonly Action<object> _execute; public RelayCommand(Predicate<object> canExecute, Action<object> execute) { _canExecute = canExecute; _execute = execute; } // ICommand 实现... }</code>
이 구현은 다음 예와 같이 명령 생성을 단순화합니다.
<code class="language-csharp">public class MyViewModel { public ICommand DoSomethingCommand => new RelayCommand( p => this.CanDoSomething(), p => this.DoSomeImportantMethod()); }</code>
기타 리소스:
• Josh Smith의 "패턴 - MVVM 디자인 패턴을 사용한 WPF 애플리케이션"은 RelayCommand 접근 방식에 대한 추가 통찰력을 제공합니다.
위 내용은 일반 ICommand 또는 RelayCommand가 재사용 가능한 MVVM 명령에 대한 최선의 접근 방식입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!