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] の両方が StarredTitle として「Sample Data 2」を持ち、以前のすべての値が最新のセットによって上書きされることを意味します。

なぜこれが起こっているのですか?どうすれば修正できますか?

4

2 に答える 2

2

これは、クラスでstaticメンバーを宣言したためです。キーワードを削除するだけです。StarredDatastatic

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メンバー定義からキーワードを削除することで修正できます。

クラスのインスタンスがいくつ作成されても、静的メンバーのコピーは 1 つだけ存在します。

ここをチェックしてください:http://msdn.microsoft.com/en-us/library/79b3xss3.aspx

于 2013-09-11T15:11:09.040 に答える