创建ObservableCollection <t>类</t>

时间:2011-10-22 05:24:26

标签: c# .net design-patterns observablecollection

我有一个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甚至是解决此类问题的正确途径吗?

2 个答案:

答案 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模式。