Запуск RelayCommand из CodeBehind, привязанного к VM

Интересно, могу ли я создать RelayCommand в моей ViewModel следующим образом:

public RelayCommand<IList<VectorViewModel>> MyCommand { get; set; }

ctor:

MyCommand = new RelayCommand<IList<VectorViewModel>>(DoSomething);

И из кода XAML я получаю выбранные строки из DataGrid и поместить их в список.

if (xamDatagridVector.SelectedItems.Records.Count >= 3)
{
                var list = new List<VectorViewModel>();
                foreach (DataRecord record in xamDatagridVector.SelectedItems.Records)
                {
                    list.Add((VectorViewModel)record.DataItem);
                }
}

На этом этапе я хотел бы отправить список обратно в ViewModel, используя ту RelayCommand, которую я создал ранее. Можно ли создать RelayCommand в коде и привязать его к ViewModel? s команду и запустить его?

Какой есть альтернативный способ? Конечно, я мог бы использовать класс Messenger со слабыми ссылками в MVVM-Light, но мне не нравится то, что он будет отправлять его всем подписчикам этого вызова, а не только лежащей в основе ViewModel (его смертельно опасное использование Messenger, когда у вас есть несколько экземпляры одного и того же View в TabControls)

Надеюсь, у кого-то есть идея поддержать меня, Большое спасибо, Каве

8
задан Houman 9 November 2010 в 17:47
поделиться