添加到列表会替换以前的元素

时间:2013-09-11 15:03:26

标签: c# list windows-8

我有一个在GridView中用作DataContext的列表。

使用以下代码创建此列表:

        private void initializeStarredHub()
    {
        List<StarredData> starredList = new List<StarredData>();
        starredList.Add(new StarredData("ms-appx:///Images/Absence.png", "Sample Data 1"));
        starredList.Add(new StarredData("ms-appx:///Images/Absence.png", "Sample Data 2"));
        StarredHub.DataContext = starredList;
    }

StarredData的位置

    public class StarredData
    {
        public static string StarredImage { get; set; }
        public static string StarredTitle { get; set; }

        public StarredData() { }

        public StarredData(string itemImageSet, string itemNameSet)
        {
            StarredImage = itemImageSet;
            StarredTitle = itemNameSet;
        }
    }

以上的最终结果是starredList [0]和starredList [1]将“Sample Data 2”作为StarredTitle,这意味着所有先前的值都被最新的集合覆盖。

为什么会发生这种情况,我该如何解决?

2 个答案:

答案 0 :(得分:2)

那是因为您在static课程中宣布了StarredData个成员,只需删除static个关键字:

public class StarredData
{
    public string StarredImage { get; set; }
    public string StarredTitle { get; set; }

    public StarredData() { }

    public StarredData(string itemImageSet, string itemNameSet)
    {
        StarredImage = itemImageSet;
        StarredTitle = itemNameSet;
    }
}

答案 1 :(得分:1)

您可以通过从成员定义中删除static关键字来解决此问题。

  

无论创建了多少个类实例,都只存在一个静态成员的副本。

点击此处:http://msdn.microsoft.com/en-us/library/79b3xss3.aspx