2010-06-07 4 views
3

조쉬 스미스 (Josh Smith)와 Laurent Bugnion의 RelayCommand 구현간에 차이가 있는지 알지 못하지만 어디에서나 보았습니다. RelayCommand의 실행 부분은 0 또는 1 개의 매개 변수를 취할 수 있습니다. 나는 오류가MVVM Light Toolkit의 RelayCommand에서 람다 함수에 단일 매개 변수를 전달할 수 없음

public class Test 
{ 
    public RelayCommand MyCommand { get; set; } 

    public Test() 
    { 
     MyCommand = new RelayCommand((param) => SomeFunc(param)); 
    } 

    private void SomeFunc(object param) 
    { 
    } 
} 

: Delegate 'System.Action' does not take '1' arguments 난 단지 내가 좋아하는 뭔가를하려고하면 0에서 작동하도록 그것을 얻을 수있었습니다. 내가 정신이 나지 않았는지 확인하기 위해 RelayCommand의 정의에 가서 어딘가에 내 솔루션에서 일부 불량 구현을하지 않았는지 확인했지만, 이는 단지 액션이었고 액션은 아니었다. <>.

여기에 실종 된 항목은 무엇입니까?

+0

가능한 중복 [CanExecute가 RelayCommand 작동하지 (http://stackoverflow.com/questions/2306063/canexecute-on-relaycommandt-not-working) –

답변

7

RelayCommand (MVVM Light에서) 제네릭이 아닌 구현은 매개 변수를 허용하지 않습니다. 대신 RelayCommand<Object>을 사용하거나 RelayCommand<YourCustomType>을 (더 나은) 사용하여 SomeFunc의 매개 변수를 강하게 입력하십시오. 의

+0

덕분에, 매트, 드디어 * * 또한 정보를 발견 다소 관련 게시물 (이마를 때리다) - http://stackoverflow.com/questions/2306063/canexecute-on-relaycommandt-not-working. 나는 내 질문을 지우려고했으나 대답은 너무 빠르다. :) 나는 시스템이 그것을 허용하자마자 이것을 받아 들일 것이다! 고맙습니다. – Dave

+0

나는 이것을 하나의 투표로 끝내기 위해 투표 할 것이다. 먼저 어떤 일이 일어날 지 알게 될 것입니다. :) –

+0

내가 이겼다고 생각해? 하하 – Dave