私有setter用于自定义对象列表

时间:2013-10-21 19:54:51

标签: c# properties private public getter-setter

我有这个代码可以正常工作

public partial class MainWindow : Window
{
    private static ObservableCollection<Archive> _archiveList = new ObservableCollection<Archive>();
    public static ObservableCollection<Archive> archiveList { get { return _archiveList; } }
}
private void build_archiveList()
{
    // create new Archive
    // add the new Archive to archiveList
}

...但如果我尝试使用自动实现的属性,它就行不通,我不明白为什么。 具有自动实现属性的代码:

public partial class MainWindow : Window
{
    public static ObservableCollection<Archive> archiveList { get; private set; }
    public MainWindow()
    {
            InitializeComponent();

            archiveList = new ObservableCollection<Archive>();
            build_archiveList();
    }
}

为什么第二种方法不起作用?

编辑:抱歉不完整,列表与数据网格绑定,并且在使用第二种方法时数据网格保持为空(尽管由于两种方法都增加了archiveList.count,因此添加了新的存档)

build_archiveList如何将归档添加到列表中(observablecollection):

tmpArchive.content.Add(new ArchiveFile(bfile.FileName, bfile.Crc.ToString(), false));
archiveList.Add(tmpArchive);

1 个答案:

答案 0 :(得分:1)

移动

archiveList = new ObservableCollection<Archive>();

到静态构造函数。

<强>解释

绑定到auto属性(绑定发生在InitializeComponent)中为null,然后添加新列表。