2017-02-01 3 views
0

Я создаю приложение в UWP, и у меня есть вопрос. Могу ли я каким-то образом подключить MVVM Light с событием SelectionChanged (например, ListView) или другим событием? Мне бы хотелось, чтобы при нажатии на элемент в ListView я вызываю SelectionChanged.Конвекция MVVM Light с SelectionChanged

Как мне сделать?

+0

Любые обновления по этой проблеме? Если у вас есть какие-либо другие проблемы в отношении этой проблемы, пожалуйста, сообщите мне об этом. –

ответ

2

Вы можете написать метод в ViewModel и использовать x:bind для соединения ViewModel.

Метод MVVMLight используется в WPF, который не может связывать событие в методе.

UWP может использовать x:bind, чтобы связать событие пользовательского интерфейса с ViewModel.

Образец:

XAML:

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

XAML.cs:

private ViewModel View{set;get;} 

ViewModel:

public void SelectionChanged() 
{ 

} 

Вы можете использовать ItemClick событие, которое будет выполняться, когда вы нажмите t он ListViewItem.

0

Внутри вашей ViewModel что-то * .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; 
     } 
    } 
} 

В вашем viewSomemthing.xaml --Для имен

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

--Then спуститься к вашему контролю, мы» ll использовать Combobox в качестве примера

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