具有动态集合属性的ViewModel

时间:2011-09-13 14:52:47

标签: wpf mvvm collections wpf-controls datacontext

我正在使用WPF和MVVM模式。所以我的问题是,如果在ViewModel中,辅助窗口/视图可能有一个动态属性,它将有一些集合。

我的应用程序有不同的自定义类,它们是类别,供应商等集合,我正在尝试创建一个ViewModel,每当用户想要编辑集合的项目时,它将拥有一个属性来拥有其中一个集合。我怀疑是否可以通过ViewModel实现。

在ViewModel中,我有布尔属性来显示或不显示ListView中的标签,文本框和一些列。而将成为ViewModel中属性的Collection将由ListView绑定。

我正在尝试这样做,所以我可以阻止为每个要编辑的集合创建一个窗口/视图。

我的课程:

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

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

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

提前致谢!

1 个答案:

答案 0 :(得分:2)

如果我的笔记正确,您可以通过介绍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];
}