如何跨页面刷新保持属性的值?

时间:2013-01-15 11:20:05

标签: windows-phone-7 windows-phone-8

我在app.xaml中创建了一个属性(公共静态列表id {get set}) 我可以添加数据(例如:App.id.Add(user.id))。

这样我就可以从页面中获取添加的数据并使用任何导航页面(例如:App.id [3])。

初始化是页面刷新时数据返回App.id [0]

的问题

2 个答案:

答案 0 :(得分:0)

是的,您可以在app.cs中定义的公共属性可以从您应用中的所有页面到达。

在你的App.cs

    public List<String> id = new List<string>();

    // Call this method somewhere so you create some data to use... 
    // eg in your App() contructor
    public void CreateData()
    {
        id.Add("ID1");
        id.Add("ID2");
        id.Add("ID3");
        id.Add("ID4");
        id.Add("ID5");
    }

当您需要使用它时,您可以从中获取数据。 OnNavigateTo事件处理程序

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
    // Sets the data context for the page to have a list of strings
    this.DataContext = ((App)Application.Current).id;

   // Or you can index to the data directly
   var a = ((App)Application.Current).id[2];
}

答案 1 :(得分:0)

Alternativ你可以在这里使用Singleton模式,这将确保创建列表并且只有一个实例存在。

在App.cs文件中写下以下内容:

    private static List<string> _id;

    public static List<string> id
    {
        get
        {
            if (_id == null)
                _id = new List<string>();

            return _id;
        }

        set
        {
            _id = value;
        }
    }