C# 管理在UWP项目中始终需要访问的类列表的最佳方法

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

我目前有一个类对象列表,它是我的UWP项目中的一个全局变量,因此可以从所有页面访问它

我想在运行程序时从文件中填充此列表

用于读取文件的函数是一个异步函数,我不确定哪部分代码最适合填充列表

我已经在App.xaml.cs中尝试过:

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>;
}

如果您能向我们展示一些代码作为上下文,那就太好了。我已经更新了这个问题以获得更多细节。