ObservableCollection的封装不起作用

时间:2013-03-12 16:18:22

标签: c# .net properties observablecollection encapsulation

我的财产是:

private static ObservableCollection<Wynik> lottoWyniki = new ObservableCollection<Wynik>();
    public static ObservableCollection<Wynik> LottoWyniki
    {
        get { return lottoWyniki; }
        set { lottoWyniki = value; }
    }

稍后在代码中我想向此集合添加对象:

for(i=2;i<=7;i++)
                LottoWyniki.Add(new Wynik(i,Date));

我正在添加的每个新对象都将替换之前存在的所有对象。所以在这段代码完成后,我得到的ObservableCollection包含一个(最后一个)重复6次的对象。我做错了什么?

编辑: 在Wynik的构造函数中,我正在做:

public Wynik (int l, DateTime d) 
{  
    Liczba = l;  
    Data = d; 
}

Wynik级别:

class Wynik
{
    private static DateTime data;
    public static DateTime Data
    {
        get { return data; }
        set { data = value; }
    }

    private static int liczba;
    public static int Liczba
    {
        get { return liczba; }
        set { liczba = value; }
    }

    public Wynik (int l, DateTime d)
    {
        Liczba = l;
        Data = d;
    }
}

2 个答案:

答案 0 :(得分:1)

你的班级变量很可能是静态的。尝试将所有属性更改为非静态成员,这将解决您的问题。

答案 1 :(得分:0)

将您的班级更改为:

class Wynik
{
    private DateTime data;
    public DateTime Data
    {
        get { return data; }
        set { data = value; }
    }

    private int liczba;
    public int Liczba
    {
        get { return liczba; }
        set { liczba = value; }
    }

    public Wynik (int l, DateTime d)
    {
        Liczba = l;
        Data = d;
    }
}

问题是您的属性都是static,这意味着您的类的每个实例都共享相同的属性。这不是你有一个具有相同对象的数组6次,你有6个不同的对象,你只是无法区分它们因为它们都具有DataLiczba的相同值