2017-02-01 35 views
0

私はUWPでアプリケーションを作成していますが、質問があります。 MVVM LightとSelectionChangedイベント(ListViewなど)を別の方法で接続することはできますか? ListViewでアイテムをクリックすると、SelectionChangedが呼び出されます。Conection MVVM Light with SelectionChanged

どうすればよいですか?

+0

この問題に関する最新情報はありますか?この問題に関して他にも懸念がある場合は、お気軽にお知らせください。 –

答えて

2

ViewModelにメソッドを記述し、接続ViewModelにx:bindを使用できます。

MVVMLightのメソッドは、WPFで使用され、メソッドのイベントをバインドできません。

UWPでは、x:bindを使用して、UIイベントをViewModelにバインドできます。

サンプル:

XAML:

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

XAML.cs:

private ViewModel View{set;get;} 

のViewModel:

public void SelectionChanged() 
{ 

} 

あなたが実行されますによってitemClickイベントを使用することができますクリックしてください彼はListViewItem。 *名前空間

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

--ForあなたviewSomemthing.xaml では.cs

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; 
     } 
    } 
} 

があなたのコントロールに下る--Then、私たちは」あなたのviewmodel何かインサイド

0

例としてComboboxを使用します。

<ComboBox ... /> 
    <i:Interaction.Triggers> 
    <EventTrigger EventName="SelectionChanged"> 
     <i:InvokeCommandAction Command="{Binding DoSelectionChangedCommand}"/>    
    </EventTrigger> 
</i:Interaction.Triggers> 
</ComboBox> 
関連する問題