2017-02-01 5 views
0

UWP에서 응용 프로그램을 만들고 있는데 질문이 있습니다. SelectionChanged 이벤트 (예 : ListView) 또는 다른 이벤트와 MVVM Light를 어떻게 든 연결할 수 있습니까? ListView에서 일부 항목을 클릭하면 SelectionChanged가 호출됩니다.Conection MVVM Light with SelectionChanged

어떻게하면됩니까?

+0

이 호에 대한 모든 업데이트는 있습니까? 이 문제와 관련하여 다른 문제가 있으시면 언제든지 알려 주시기 바랍니다. –

답변

2

ViewModel에 메소드를 작성하고 x:bind을 ViewModel에 연결할 수 있습니다.

MVVMLight의 메서드는 메서드에서 이벤트를 바인딩 할 수없는 WPF에서 사용됩니다.

UWP는 x:bind을 사용하여 UI 이벤트를 ViewModel에 바인딩 할 수 있습니다.

샘플 :

XAML :

<ListView SelectionChanged = "{x:bind view.SelectionChanged }"/> 

XAML.cs :

private ViewModel View{set;get;} 

뷰 모델 :

public void SelectionChanged() 
{ 

} 

당신은 대해서 itemClick 이벤트를 사용할 수있는 때를 실행할 것 클릭 그는 ListViewItem입니다. 당신의 ViewModel 뭔가 내부

0

* .cs

컨트롤에 가서 --Then

xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" 

당신의 viewSomemthing.xaml --For 네임 스페이스에서

public class RelayCommand : ICommand 
{ 
    private Predicate<object> _canExecute; 
    private Action<object> _execute; 

    public RelayCommand(Predicate<object> canExecute, Action<object> execute) 
    { 
     this._canExecute = canExecute; 
     this._execute = execute; 
    } 

    public event EventHandler CanExecuteChanged 
    { 
     add { CommandManager.RequerySuggested += value; } 
     remove { CommandManager.RequerySuggested -= value; } 
    } 

    public bool CanExecute(object parameter) 
    { 
     return _canExecute(parameter); 
    } 

    public void Execute(object parameter) 
    { 
     _execute(parameter); 
    } 
} 

public class MyViewModel 
{ 
    private ICommand _doSelectionChangedCommand; 
    public ICommand DoSelectionChangedCommand 
    { 
     get 
     { 
      if (_doSelectionChangedCommand == null) 
      { 
       _doSelectionChangedCommand = new RelayCommand(
        p => this.CanSelectionChanged, 
        p => this.DoSomeImportantMethod()); 
      } 
      return _doSomething; 
     } 
    } 
} 

, 우리는 ' 콤보 박스를 예로 들어 보겠습니다.

<ComboBox ... /> 
    <i:Interaction.Triggers> 
    <EventTrigger EventName="SelectionChanged"> 
     <i:InvokeCommandAction Command="{Binding DoSelectionChangedCommand}"/>    
    </EventTrigger> 
</i:Interaction.Triggers> 
</ComboBox>