C# 管理在UWP项目中始终需要访问的类列表的最佳方法
我目前有一个类对象列表,它是我的UWP项目中的一个全局变量,因此可以从所有页面访问它 我想在运行程序时从文件中填充此列表 用于读取文件的函数是一个异步函数,我不确定哪部分代码最适合填充列表 我已经在App.xaml.cs中尝试过:C# 管理在UWP项目中始终需要访问的类列表的最佳方法,c#,list,uwp,C#,List,Uwp,我目前有一个类对象列表,它是我的UWP项目中的一个全局变量,因此可以从所有页面访问它 我想在运行程序时从文件中填充此列表 用于读取文件的函数是一个异步函数,我不确定哪部分代码最适合填充列表 我已经在App.xaml.cs中尝试过: public static List<Class> classList = new List<Class>(); public App() { classList = await Files.Re
public static List<Class> classList = new List<Class>();
public App()
{
classList = await Files.ReadFromFileAsync<List<Class>>(filePath);
this.InitializeComponent();
this.Suspending += OnSuspending;
}
然而,这不能像App方法那样工作,也不能是异步的,我认为这样做是完全错误的
我有三个主要问题:
有没有办法让这一切顺利进行?
有没有更好的方法通过全球列表来实现这一点?
有没有一种在页面之间传递列表的方法不需要局部变量,甚至比这更好?
有没有办法让这一切顺利进行
您可以创建一个异步方法,将异步函数放入其中,然后在应用程序构造函数中调用此方法。请注意,如果异步函数需要很长时间,则在加载页面后,列表可能尚未填充
public App()
{
getLists();
this.InitializeComponent();
this.Suspending += OnSuspending;
}
public async void getLists()
{
classList = await Files.ReadFromFileAsync<List<Class>>(filePath);
}
有没有更好的方法通过全球列表来实现这一点
您还可以在App.xaml.cs中的OnLaunched方法中放置异步函数,在加载页面之前,列表已填充,但这将延长初始屏幕
protected override async void OnLaunched(LaunchActivatedEventArgs e)
{
classList = await Files.ReadFromFileAsync<List<Class>>(filePath);
......
}
是否有一种在页面之间传递列表的方法
从一个页面导航到另一个页面时,可以将列表传递给navigate方法,如:
Frame.Navigate(typeof(BlankPage1), new List<string>());
您可以从第1页的OnNavigatedTo方法接收列表
protected override void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);
List<string> lists = e.Parameter as List<string>;
}
如果您能向我们展示一些代码作为上下文,那就太好了。我已经更新了这个问题以获得更多细节。