2011-08-27 2 views
0

RoleViewModel 개체 모음에 바인딩 된 DataForm이 있습니다. MVVMLight의 EventToCommand 동작을 이벤트 (DataForm)에 바인딩하여 역할을 편집 할 때 내 ViewModel에 알립니다.MVVM Light EventToCommand 및 Silverlight DataForm - EventArgs 및 사용자 지정 CommandParameter가 필요합니다. 가능한?

이제 사용자가 역할을 편집하고 '확인', '취소'를 클릭하거나 간단히 이동할 수 있습니다. 이 정보는 DataFormEditEndedEventArgs에있는 DataFormEditAction 속성에 있습니다 (OK는 DataFormEditAction.Commit이고 다른 것은 DataFormEditAction.Cancel 임).

문제

내가 PassEventArgsToCommand을 선택 여부를 명령 RelayCommand<DataFormEditEndedEventArgs>의 서명을 선택해야한다는 것입니다 아니면 서명 RelayCommand<RoleViewModel>을, 행동의 CommandParameterDataFormCurrentItem을 결합한다. 모두이 필요합니다.

사용자가 편집을 취소했는지 여부를 알기 위해서는 EventArgs이 필요하며 취소하지 않은 경우 데이터베이스에 다시 저장하려면 새 역할이 필요합니다.

누구에게 영리한 제안이 있습니까? 내 손을 더럽힐 수 있고 두 가지 매개 변수를 사용하여 두 번째 동작을 만들 수 있다고 생각하지만 좀 더 우아한 해결책이 있다면 오히려하지 않을 것입니다.

도움을 주시면 감사하겠습니다.

미리 감사드립니다.

답변

2

뷰 모델이 newrole의 바인드 가능한 값을 데이터 폼에 보유하고 있다면 PassEventArgsToCommand를 사용하여 저장/업데이트/취소하기 전에 데이터를 조작 할 수 있습니다.

이것은 우리가 비슷한 시나리오를 해결 한 방법입니다.

+0

나는 누군가가 이것을 여러 해 동안 기다리고 있었다. 이것이 내가 끝까지 취한 접근 방식이며, 물론 올바른 방법입니다. 언젠가는 모든 것이 못처럼 보입니다. :-) – Stimul8d

관련 문제