Windows Phone应用程序中页面之间的全局作用域对象

本文关键字:全局 作用域 对象 之间 Phone 应用程序 Windows | 更新日期: 2023-09-27 18:28:56

我有两个名为"xxxManager"的静态类。当"MainPage"启动时,我对它们进行初始化,它们从内存中获取一些数据,以在我的应用程序中表示,特别是进入列表。我将它们创建为静态类,因为我需要在应用程序的每个页面中都有它们的数据。所以我只做:

CCD_ 1和I可以使用它的所有值。

问题是,我不希望它们是静态的,因为我想创建一个抽象类,并使用来派生我的两个"Manager"。如果我要这样做,我将需要创建这些类的构造函数,但我不想每次进入另一个页面时都执行new,因为它会从内存中读取另一个时间的每个数据。

如何通过页面将对象放入所有应用程序的全局范围?

我想创建一个静态类(只是一个例子):

public static Definitions()
{
     xxxManager manager_;
     public void Initialize()
     {
          xxxManager manager_ = new xxxManager();
     }
}

这是一个好的解决方案,还是有更好的解决方案?

Windows Phone应用程序中页面之间的全局作用域对象

据我所知,您需要实现singleton模式。

public class XxxManager
{
    private static Lazy<XxxManager> lazyInstance = new Lazy<XxxManager>(() => new XxxManager());
    private XxxManager() 
    {
    }
    public static XxxManager Instance
    {
        get
        {
            return lazyInstance.Instance;
        }
    }
}

从那里,您可以通过调用XxxManager.Instance从代码中的任何位置检索您的经理。类的构造函数被设置为private,以确保它从未被手动实例化。

我通常在App.xaml.cs 中创建一个静态属性

public static ViewModels.ViewModelBase ViewModel { get; set; }

在同一文件中的OnLaunched事件中初始化它。通过这种方式,它可以在应用程序中的任何位置使用App.PropertyName

protected override void OnLaunched(LaunchActivatedEventArgs e)
{
    // other code
    ViewModel = new MainViewModel();
    // other code
}

对我来说,这适用于ViewModels和NavigationHelpers以及应用程序中任何地方都需要访问的任何其他部分。