2010-11-21 3 views
9

RoutedCommand 및 RoutedUICommand에 많은 영향이 있습니다. 텍스트 및 키보드 제스처에 대한 구운 지원이 있습니다. RoutedUICommands 컬렉션을 메뉴의 ItemsSource에 바인딩하면 자동으로 메뉴 항목을 만들고 바인딩합니다. 일부 명령 (잘라 내기, 복사, 붙여 넣기)은 즉시 사용할 수있는 컨트롤로 자동으로 지원됩니다.RoutedCommand와 잘 어울리는 MVVM 프레임 워크는 무엇입니까?

그러나 MVVM을 사용할 때마다 반복적 인 상용구 XAML 및 각 코드에 대해 작성해야하는 코드 숨김 때문에 라우트 된 명령이 적합하지 않은 것으로 나타났습니다. 내가 MVVM을 할 때, 나는 보통 라우팅 된 명령 대신에 RelayCommand을 사용하여 감았습니다. 이것은 몇 가지 적절한 해결 방법이지만, 단점이 있습니다. 예를 들어 핵심 동작은 much more complicated이됩니다.

그러나 Rob Eisenberg의 "Build your own MVVM Framework" 세션을 시청 한 후에는 더 이상 릴레이 명령과 단점에 만족하지 않습니다. 라우트 된 명령의 유일한 문제점은 반복적 인 상용구 코드였습니다. 반복 코드를 프레임 워크에 포함시키고 규칙을 적용하면 MVVM에서 라우트 된 명령을 사용하지 않는 이유가 더 이상 존재하지 않습니다.

기술적으로 보면 어렵지 않을 것 같습니다. 프레임 워크는 뷰의 CommandManager.CanExecuteExecuted 이벤트에 바인딩하고 ViewModel에서 메서드 및 속성을 찾기 위해 규칙을 적용해야합니다. 예를 들어 Cut 명령이 실행될 때 ExecuteCut 메서드 (및 CanExecuteCut 속성)를 ViewModel MVVM 프레임 워크를 쉽게 만들 수 있습니다.

내 질문은 입니다 이미 RoutedCommand와 함께 작동하는 MVVM 프레임 워크가 있습니까? 필자가 깊이 알고있는 유일한 MVVM 프레임 워크는 Caliburn.Micro입니다. 현재이 방법으로 라우트 된 명령을 지원하지 않습니다 (자체적 인 동작 버블 링을 지원하므로 놀라워합니다).

답변

1

내가 올바르게 기억하면 Sacha Barber는 그 방향으로 뭔가를했습니다. 나는 당신이 모양을 가질 수 있다고 생각합니다. here.

+1

웹 사이트는 라우트 된 이벤트에 대해서는 아무 것도 말하지 않습니다. 소스 코드를 한눈에 살펴 보았지만 관련성이없는 것처럼 보입니다. –

2

SO 및 기타 사이트의 연구 마라톤이 많았지 만 RoutedCommand를 사용하기위한 적절한 프레임 워크를 찾지 못했습니다.

그러나 WPF Disciple Josh Smith 중 하나는 MVVM에서 라우팅 된 명령을 사용하는 멋진 솔루션을 구현했습니다.

MVVM 아키텍처에서 RoutedCommands를 사용하려면 깨끗하고 가벼운 것으로 확인 된 Using RoutedCommands with a ViewModel in WPF을 확인할 수 있습니다.

관련 문제