2010-01-19 2 views
5

내가 스택 오버플로에이 찾고있는 뒤에 코드에서 ICommand의 또는 CommandReference를 실행할 수 있지만, 어떻게 ... 그래서이 중복 밤은 희망을 아직에 대한 답변을 찾을 수 couldnt는MVVM 패턴은 - 내가

MVVM 패턴을 사용하는 응용 프로그램을 가지고 있지만 깨끗한 상태로 유지하려고하지만 때로는 약간의 코드가 XAML 해결 방법보다 깨끗해 보일 때가 있습니다.

코드 숨김에서 명령을 트리거 할 수 있는지 알고 싶습니다.

이미 내보기에서 명령 참조를 설정 한

은 내가 원하는 무엇

<local:CommandReference 
       x:Key="CommandReferencePreviewReportsCommand" 
       Command="{Binding PreviewReportsCommand}" /> 

뷰의 뒤에 C# 코드에서 명령 참조 또는 ICommand의를 트리거 할 수 있습니다 (아래 참조) . 누구든지이 작업을 수행하는 방법을 알고 있습니까?

답변

5

당신은 코드 숨김에서 명령을 호출 할 수 있습니다

var parameter = null; // can also be any object you'd like to use as a parameter 
this.PreviewReportsCommand.Execute(parameter); 
+0

감사합니다 마크,하지만이 작동하지 않습니다. 나는이 명령을 "볼"수없는 것 같은보기의 코드 숨김에서 명령을 호출하고 싶습니까? 이 코드를 ViewModel 아래에두면이 코드가 제대로 작동한다고 가정 할 수 있지만 대신 뷰 뒤에서 액세스 할 항목이 필요합니다. –

+0

감사 마크 ... 나는 그것이 작동하도록하기 위해 필요한 약간의 조정이 있었다. 그러나 당신은 나를 올바른 길로 가게했다. –

+0

나는 그것이 잘 작동하는 것을 본다. - 좋은 :) 어떤 코드 숨김 파일에서이 작업을 수행해야하는지 완전히 명확하지는 않다. –

3

좋아 ... 마크 시만을 - 당신은 밖으로 나를 바른 길에 ... 그래서 투표를 올렸다 ...

나는 데이터 컨텍스트가 ViewModel의 명령을 볼 수있게하는 타입 캐스트가 될 수 있다는 것을 알지 못했다. 그래서 아래 코드는 내 상황에서 작동한다. 일반적인 솔루션은 비슷할 것이다.

((ViewModel.PrintSelectViewModel) this.DataContext).PreviewReportsCommand.Execute(null);