Команды Silverlight MVVM - PullRequest
       18

Команды Silverlight MVVM

0 голосов
/ 25 марта 2011

Я бы хотел «уменьшить» количество команд в моем классе ViewModel. У меня есть одна ViewModel, которая содержит 5+ списков (используя Listboxes на View для представления, и я привязываю ObservableCollection к его параметру ItemSource; также привязываю свойство SelectedItem), и у каждого списка должна быть своя кнопка Add / Remove / etc.

Итак, это выглядит так:

public class PersonViewModel : ViewModelBase
{
    Person _Person;
    private ObservableCollection<WorkPlaceViewModel> _WPlaces;
    private ObservableCollection<LanguageViewModel> _Languages;
    ... other lists

    private WorkPlaceViewModel _SelectedWorkPlaceView;
    ...

}

Добавление команды 5x2 делает ViewModel немного большим. Я мог бы жестко закодировать строку в CommandParameter и обработать ее с помощью переключателя в моей ViewModel, но это звучит как взлом. :п Или я должен пойти с созданием команды Remove для каждого списка и передать SelectedItem в качестве параметра?

Какой лучший способ для этого в MVVM?

1 Ответ

1 голос
/ 25 марта 2011

Почему у вас есть коллекция моделей в вашей модели?Что PersonViewModel должен выполнить.Для меня это звучит так, как будто вам нужно разбить свое представление на несколько представлений и связать их с разными моделями представления.Ваши виды и модели должны быть как можно меньше, чтобы уменьшить сцепление.

Тем не менее, я бы порекомендовал команды для добавления / удаления для каждой наблюдаемой коллекции.Использование строки с жестким кодом, как вы уже догадались, грязное.Если у каждой наблюдаемой коллекции есть свои собственные функции добавления / удаления, которые будут иметь различную логику для каждой коллекции и более удобны в обслуживании.

Можете ли вы опубликовать больше кода из вашей модели представления и немного описать приложение?Это поможет нам определить, может ли быть лучшее дизайнерское решение.

...