C# 添加到列表将替换以前的元素
我有一个列表,在GridView中用作DataContext 此列表是使用以下代码创建的:C# 添加到列表将替换以前的元素,c#,list,windows-8,C#,List,Windows 8,我有一个列表,在GridView中用作DataContext 此列表是使用以下代码创建的: private void initializeStarredHub() { List<StarredData> starredList = new List<StarredData>(); starredList.Add(new StarredData("ms-appx:///Images/Absence.png", "Sam
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;
}
上面的最终结果是starredList[0]和starredList[1]都将“示例数据2”作为StarredTitle,这意味着所有以前的值都被最新的集覆盖
为什么会发生这种情况以及如何修复它?这是因为您在
StarredData
类中声明了static
成员,只需删除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;
}
}
您可以通过从成员定义中删除
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;
}
}