우리는 리본이 달린 커다란 앱을 가지고 있습니다. 리본 버튼은 모두 기본보기 모델 (기본 앱 창의 데이터 컨텍스트)에있는 명령에 바인딩됩니다.MVVM Light 만 사용하는 별도의 클래스에 구현 된 ICommand?
다양한 리본 명령에 바인딩 된 RelayCommands를 많이 만들면서 MainViewModel의 생성자가 커지기 시작합니다. 차라리 MainViewModel의 생성자에서 인라인 코드의 톤보다, 각 명령을 구현하는 별도의 수업을 선호하는 것
public MainWindowViewModel()
{
this.OpenProjectCommand = new RelayCommand(() =>
{
// buncha code
});
this.ProjectTypesCommand = new RelayCommand(() =>
{
// more code
});
this.NewSectionCommand = new RelayCommand(() =>
{
// code code code...
});
// ... only three ribbon buttons down, this is gonna get huge...
}
: 그것은 다음과 같이 보입니다. (또는 OpenProject, CanOpenProject와 같은 MainViewModel에서 많은 대리자를 만든 다음 RelayCommand 생성자에 대한 참조를 전달합니다.)
단순히 CommandBase에서 ICommand를 구현 한 다음 별도의 명령을 작성하지 않는 이유는 무엇입니까? 왜냐하면 저는 this question에 따라 "표준 친화적"이되고 싶습니다.
내 명령이 별도의 클래스가되도록 사용할 수있는 표준 ICommand 구현이 있습니까?
이미 MVVM Light를 사용하고 있으므로 믹스에 MVVM 프레임 워크를 추가하지 않는 것이 좋습니다. 그러나 나는 또한 바퀴를 재발 명하고 싶지 않다.
업데이트 : MainViewModel.cs는 수십 개의 #regions 또는 명령 방법으로 어지러 울 필요가 없습니다. 확장 방법은 IMHO에 적합하지 않습니다.
어떻게 명령을 생성하고 commandparameter 안에 당신이 하나의 명령의 실행 방법 안에 if 문에 의해 사용되는 조건을 지정 어떻습니까? –
@devhedgehog 각 명령을 고유 한 클래스로 구분하려고하지만 설정된 MVVM 규칙 또는 MVVM Light 도구 (링크 된 질문 참조)와 반대되는 방식으로 보겠습니다. –