我有一个在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,这意味着所有先前的值都被最新的集合覆盖。
为什么会发生这种情况,我该如何解决?
答案 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
关键字来解决此问题。
无论创建了多少个类实例,都只存在一个静态成员的副本。