将项添加到另一个类的列表中Windows Phone 8.1

时间:2015-07-29 09:39:22

标签: c# list listview windows-phone-8.1 runtime

我发现了类似的问题,但我没有设法解决我的问题。

我有一个Windows Phone 8.1 Runtime项目。我们考虑一个班级和2页。

Item 类包含对象的属性

public class Item
{
    public string firstname { get; set; }
    public string lastname { get; set; }

    public Item(string fname, string lname)
    {
        this.firstname = fname;
        this.lastname = lname;
    }
}

项目的 MainPage 会创建项目列表

public List<Item> list = new List<Item>();

并使用函数

将项目添加到列表中
list.Add(new Item(string1, string2));

然后我有另一个名为 NewItem 的页面。我使用此代码将项添加到列表中,但它们没有出现(就像代码没有执行,但实际上它没有执行)

MainPage m = new MainPage();
m.list.Add(new Item(string1, string2));

为什么不将项目添加到MainPage中的列表?我使用Frame.Navigate()而不是NavigationService类进行导航,这是一个问题吗?谢谢!

1 个答案:

答案 0 :(得分:0)

第一行:

MainPage m = new MainPage();
m.list.Add(new Item(string1, string2));

您正在创建MainPage的新实例,而不是您导航的实例。因此,对该实例的变量所做的任何更改都不会对您之前的页面产生影响。另请注意,一旦新实例超出范围,它将被垃圾收集。

其中一个解决方案可能是让您的list成为一个静态变量 - 然后您就可以从应用程序中获取它MainPage.list.Add(...);。有关静态变量的更多信息,请find at MSDN

其他解决方案可能是传递上一页的处理程序,然后访问其变量。

另请注意,如果您使用list作为UI元素的来源,最好将其设为ObservableCollection,以便它会自动通知UI有关其更改的信息。