Creating a ObservableCollection<T> class

本文关键字:gt class lt ObservableCollection Creating | 更新日期: 2023-09-27 18:12:17

我有一个person类,并想创建一个名为peopleObservableCollection<person>类。我见过一些类似实现的例子,但不完全理解它们之间的区别。例如:

public class people : ObservableCollection<person>
{
    public people()
    {
    }
}

public class people
{
    ObservableCollection<person> public people()
    {
    }
}

这些实现中的一个是从根本上错误的吗?我没有任何工作代码,但希望在正确的方向开始轻推。

编辑(每@Groky的建议):

我正在寻找创建一个ObservableCollection<Person>。我想在绑定的MVVM设置中使用此集合。具体来说,我想将所有person的名字和姓氏绑定到一个自定义控件。

FIRST:创建这样一个类是不好的做法,还是我应该像@Groky建议的那样在视图模型中实现ObservableCollection ?

SECOND:使用ObservableCollection是解决这类问题的正确方法吗?

Creating a ObservableCollection<T> class

听起来你正在使用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; }
    }
}

我认为您有几种选择,例如继承或委托模式。所以在第一个变体中,你有继承模式,在第二个组合,混合和方面模式。