我有一个person
课程,想要创建名为ObservableCollection<person>
的{{1}}课程。我已经看到了类似实现的一些示例,但没有完全理解它们之间的差异。例如:
people
和
public class people : ObservableCollection<person>
{
public people()
{
}
}
其中一个实现是否从根本上错了?我没有任何正常工作的代码,但想要在正确的方向上轻推一下。
编辑(根据@ Groky的建议):
我希望创建一个public class people
{
ObservableCollection<person> public people()
{
}
}
。我想在带有绑定的MVVM设置中使用此集合。具体来说,我想将所有人的名字和姓氏绑定到一个自定义控件。
FIRST:创建一个类是不好的做法,还是应该像@Groky建议的那样在viewmodel中实现ObservableCollection?
SECOND:使用ObservableCollection甚至是解决此类问题的正确途径吗?
答案 0 :(得分:3)
听起来你正在使用WPF的MVVM模式,并且你正在尝试创建一个ViewModel类。
正如前面提到的一个回答者所说,你的两个选择描述1)继承2)委托。选择哪一个取决于您尝试表示的含义。
如果您在逻辑上尝试向People集合添加内容,则可以选择继承。但是,因为你暗示你想要绑定WPF中的其他属性,这告诉我你没有在逻辑上向集合添加属性;您将更多地添加以及集合。所以在这种情况下,你用WPF的说法创建一个ViewModel。
以下是一个例子:
public PeopleViewModel
{
public PeopleViewModel()
{
Items = new ObservableCollection<Person>();
}
public ObservableCollection<Person> Items { get; private set; }
public int NumberOfPeople
{
get { return Items.Distinct().Count; }
}
}
答案 1 :(得分:1)
我认为您有多种选择,例如继承或委托模式。所以在第一个变体中你有继承模式,在第二个组合中,mixin和aspect模式。