1

我有一个在 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,这意味着所有以前的值都被最新的集合覆盖。

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

4

2 回答 2

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;
    }
}
于 2013-09-11T15:06:01.987 回答
1

static您可以通过从成员定义中删除关键字来修复它。

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

在这里查看:http: //msdn.microsoft.com/en-us/library/79b3xss3.aspx

于 2013-09-11T15:11:09.040 回答