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();
}
}
这是一个好的解决方案,还是有更好的解决方案?
据我所知,您需要实现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以及应用程序中任何地方都需要访问的任何其他部分。