2013-10-24 7 views
0

여기에서 달성하려는 것은 동일한 명령을 사용하여 다른 종류의 코드를 실행하는 것입니다. command 매개 변수를 사용하여 실행할 코드를 구별 할 수 있습니다. RelayCommand를 사용해야 할 때 내가 원하는 방식으로 어떻게 할 수 있는지 알지 못합니다.RelayCommand WPF를 사용하여 동일한 명령에 다른 명령 매개 변수를 전달하십시오.

두 개의 서로 다른 버튼이 있는데 두 명령 모두 다른 명령 매개 변수를 사용한다는 것을 의미합니다.

public ICommand AddItemToNodeCommand { get; private set; } 

물론

:

AddItemToNodeCommand = new RelayCommand(AddItemToNode); 

몇 가지 방법이 그이 지금까지 내 XAML입니다

:

<RibbonButton SmallImageSource="../Images/whatever.png" Label="Attribute" Command="{Binding AddItemToNodeCommand}" CommandParameter="Attribute"/> 

<RibbonButton SmallImageSource="../Images/whatever.png" Label="Method" Command="{Binding AddItemToNodeCommand}" CommandParameter="Method" /> 

이 내 뷰 모델이 무엇인지한다 relayCommand를 호출 할 때 해당 명령 매개 변수를 사용할 수 있습니까?

더 많은 정보가 필요하거나 코드가 필요하면 문의하십시오.

답변

1

당신은 당신이 CommandParameter에 대한 액세스를 제공하기 위해 람다 식을 사용할 수 있습니다 ...이 시도 :

AddItemToNodeCommand = new RelayCommand(parameter => AddItemToNode(parameter)); 

여기에 (모든 람다 표현식과 같은) 이름 parameter을 유의하시기 바랍니다 무엇이든 될 수있다. .. 이것은 단지 같은 일을합니다 : 우리는 단순히 => 전에 대한 입력 매개 변수 이름을 설정하고 있기 때문에

AddItemToNodeCommand = new RelayCommand(p => AddItemToNode(p)); 

이입니다.

:이

AddItemToNodeCommand = new RelayCommand<object>(parameter => AddItemToNode(parameter)); 

을? : 같은


UPDATE >>>

당신은 당신이 시작으로 마지막 옵션은 같은 방법으로 전화를 그냥 그것을 시도 했

AddItemToNodeCommand = new RelayCommand(AddItemToNode); 
+0

마지막 비트가 트릭을 만들었습니다. 감사합니다! 왜 웹상의 많은 다른 예제들이 없이 그것을 사용하고있는 것 같기 때문에 나는 왜 그런지 이해하지 못합니다. 그러나 다시 한번 감사드립니다! –