ViewModel со свойством динамической коллекции - PullRequest
1 голос
/ 13 сентября 2011

Я работаю с WPF и шаблоном MVVM.Поэтому моя проблема заключается в том, что если во ViewModel вторичного окна / представления есть возможность иметь динамическое свойство, у которого будет некоторая коллекция.

Мое приложение имеет разные пользовательские классы, такие как категории, поставщики и т. Д.пытаясь создать ViewModel, у которого будет свойство для одной из этих коллекций каждый раз, когда пользователь хочет редактировать элементы коллекции.Я сомневаюсь, что этого можно достичь с помощью ViewModel.

В ViewModel у меня есть логические свойства, чтобы отображать или нет Labels, TextBoxes и некоторые столбцы в ListView.И коллекция, которая будет свойством в ViewModel, связана с ListView.

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

Мои занятия:

public class SupplierCollection : CollectionBase, INotifyCollectionChanged, INotifyPropertyChanged
{
    (...)
}

public class StateCollection : CollectionBase, INotifyCollectionChanged, INotifyPropertyChanged
{
    (...)
}

public class PlaceCollection : CollectionBase, INotifyCollectionChanged, INotifyPropertyChanged
{
    (...)
}

Заранее спасибо!

1 Ответ

2 голосов
/ 13 сентября 2011

Если я правильно понял ваши заметки, вы можете достичь желаемого, введя следующее enum:

enum CollectionType
{
  Suppliers,
  States,
  Places
}

, а затем добавив в View Model следующее свойство:

public CollectionType CollectionToUse { get; set; }

затем используйте switch или что-то более изолированное, например

IDictionary<CollectionType, CollectionBase> map = ....
if (map.ContainsKey(CollectionType.States))
{
    var states = map[CollectionType.States];
}
...