Привязка события SelectionChanged в Silverlight+MVVM-Light

Обработчик события "SelectionChanged" управления ComboBox имеет следующую подпись:

void SelectionChangedMethod(object sender, SelectionChangedEventArgs e)

Как связать с тем свойством под Silverlight 4 и MVVM-светом к соответствующему методу объекта ViewModel?

Насколько я знаю, я должен сделать что-то вроде этого:

public void Changed(Object obj, SelectionChangedEventArgs e)
{
    // .... implement logic here
}

RelayCommand<Object, SelectionChangedEventArgs> _command;
public ICommand ObjectSelectionChanged
{
    get
    {
        if (_command == null)
        {
            _command = new RelayCommand<Object, SelectionChangedEventArgs>(Changed);
        }
        return _command;
    }
}

Проблема состоит в том, что класс RelayCommand в MVVM-легкой платформе не поддерживает 2 универсальных параметра...

Есть ли какое-либо решение или обходное решение для этого случая? Как связывают событие управления с методом с 2 параметрами?

И другая проблема: ComboBox не имеет свойства "Command" для привязки этой команды..? Как я могу получить событие к ViewModel?

Спасибо.

P.S. Я попытался использовать свойство SelectedItem поля комбинированного списка, но кажется, что реализация ComboBox не корректна, и оно не работает...

5
задан Noctis 2 May 2014 в 12:10
поделиться

1 ответ

Есть гораздо более простой подход, чем попытка подключить SelectedChangedEvent.

Попробуйте...

<ComboBox ItemsSource={Binding Path=Names} SelectedItem={Binding Path=SelectedName, Mode=TwoWay}>

public class ViewModel : ViewModelBase
{
    private string _selectedName;
    public string SelectedName
    {
        get { return _selectedName; }
        set
        {
            if (_selectedName == value) return;
            _selectedName = value;
            RaisePropertyChanged("SelectedName");
        }
    }
}

Можно сделать так, как вы собирались

<GalaSoft_MvvmLight_Command:EventToCommand Command="{Binding MyCommand}" PassEventArgsToCommand="True"/>

Команда должна быть RelayCommand типа 'SelectionChangedEventArgs'

25
ответ дан 18 December 2019 в 06:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: