2012-10-22 7 views
0

MVVMLight에서 초보자입니다. 파노라마 탭을 변경 한 후 일부 메서드를 호출하고 싶습니다. 선택한 파노라마 탭에 대한 정보를 원합니다. 문제는 HandlePanoramaViewSelected 메서드가 호출되지 않는다는 것입니다.SelectedIndex 변경 후 동작 호출

나는 제대로 작동하지 않습니다.

<controls:Panorama x:Name="mainViewPanorama"> 
      <i:Interaction.Triggers> 
       <i:EventTrigger EventName="SelectionChanged"> 
        <cmd:EventToCommand Command ="{Binding PanoramaSelectedViewCommand, Mode=OneWay}" 
             CommandParameter="{Binding SelectedValue, ElementName=mainViewPanorama}" /> 
       </i:EventTrigger> 
      </i:Interaction.Triggers> 
</controls:Panorama> 

생성자 :

PanoramaSelectedViewCommand = new RelayCommand<SelectionChangedEventArgs>(x => HandlePanoramaViewSelected(x)); 

의 ViewModel : 당신은 두 개의 서로 다른 접근 방식을 혼합하는

public RelayCommand<SelectionChangedEventArgs> PanoramaSelectedViewCommand { get; set; } 

private void HandlePanoramaViewSelected(SelectionChangedEventArgs args) 
{ 
// do something 
} 
+1

그건 분명하지 않습니다. 너의 문제는 정확히 뭐야? –

+0

메서드 HandlePanoramaViewSelected가 호출되지 않았습니다. –

답변

1

잘못

XAML 무엇인지하지 마십시오. 단지 다음 예제 중 하나를 수행하십시오 :

패스 이벤트 인수

XAML :

<controls:Panorama x:Name="mainViewPanorama"> 
    <i:Interaction.Triggers> 
     <i:EventTrigger EventName="SelectionChanged"> 
      <cmd:EventToCommand Command ="{Binding PanoramaSelectedViewCommand}" 
           PassEventArgsToCommand="True" /> 
     </i:EventTrigger> 
    </i:Interaction.Triggers> 
</controls:Panorama> 

재산 및 처리기 :

public RelayCommand<SelectionChangedEventArgs> PanoramaSelectedViewCommand { get; set; } 

private void HandlePanoramaViewSelected(SelectionChangedEventArgs args) 
{ 
    // do something 
} 

생성자 :

PanoramaSelectedViewCommand = new RelayCommand<SelectionChangedEventArgs>(HandlePanoramaViewSelected); 



패스 명령 매개 변수

XAML :

<controls:Panorama x:Name="mainViewPanorama"> 
    <i:Interaction.Triggers> 
     <i:EventTrigger EventName="SelectionChanged"> 
      <cmd:EventToCommand Command ="{Binding PanoramaSelectedViewCommand}" 
           CommandParameter="{Binding Path=SelectedItem, ElementName=mainViewPanorama}" /> 
     </i:EventTrigger> 
    </i:Interaction.Triggers> 
</controls:Panorama> 

재산 및 처리기 :

public RelayCommand<object> PanoramaSelectedViewCommand { get; set; } 

private void HandlePanoramaViewSelected(object selectedItem) 
{ 
    // do something 
} 

생성자 :

PanoramaSelectedViewCommand = new RelayCommand<object>(HandlePanoramaViewSelected);