在另一个类中添加项目到列表

本文关键字:项目 列表 添加 另一个 | 更新日期: 2023-09-27 18:05:13

我发现了类似的问题,但我没能解决我的问题。

我有一个Windows Phone 8.1运行时项目。让我们考虑一个类和两个页面。

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类来导航,这有问题吗?谢谢!

在另一个类中添加项目到列表

第一行:

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

您正在创建MainPage的新实例,该实例不是您导航的那个。因此,对该实例的变量所做的任何更改都不会对前一个页面产生影响。还要注意,一旦这个新实例超出作用域,它将被垃圾收集。

其中一个解决方案可能是使您的list为静态变量-然后您将能够从应用程序访问它,就像这个MainPage.list.Add(...);。你可以在MSDN找到更多关于静态变量的信息。

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

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