Xamarin的.表单应用程序崩溃,因为加载文件时没有创建初始页面

本文关键字:创建 文件 应用程序 表单 崩溃 加载 因为 Xamarin | 更新日期: 2023-09-27 18:10:49

我的Xamarin。表单WP8.1应用程序不断崩溃,因为没有创建初始页面。发生这种情况是因为我在创建页面之前调用了await方法,并且在页面创建之前应用程序返回。

我需要从文件中加载一些设置;这是一个异步操作。没有它我活不下去。有没有办法让程序在启动屏幕上暂停,直到设置加载完毕?

    public App()
    {
        try
        {
            InitDatabase();
            initAppconstants();
            initStyles();
            initUI();
            SubscribeToMessageCenter();
        }
        catch (Exception ex)
        {
            Debug.WriteLine(ex.Message);
        }
    }
    private async void initUI()
    {
        await ApplySettings();
        // code to create pages
    }

InitUI()包含创建起始页的代码。由于await ApplySettings();,执行返回,然后由于未创建初始页而崩溃

Xamarin的.表单应用程序崩溃,因为加载文件时没有创建初始页面

见这里:https://stackoverflow.com/a/31315711 -根据MSDN文章,不要使用非ui线程来加载文件…在使用API之前,应用程序必须是可见的…

Xamarin正在使你的应用崩溃,因为它无法处理它,但这就是它发生的原因。

我面临同样的错误。我想我找到了它的根本原因和解决方法。

我注意到,每当我在XAML中访问ViewModel引用时,就像下面这样,它无法解析我的VM的引用。

<ContentPage.BindingContext>
     <xamFormsApp:MainViewModel/>
  </ContentPage.BindingContext>

和实现以上的事情,当我添加我的类的引用,它需要"MySampleApp。

xmlns:myApp="clr-namespace:XamFormsApp;assembly=XamFormsApp.Droid"

但是,如果我将这个绑定语句移动到后面的代码中,并像下面这样删除上面的程序集引用,它就开始工作了:

public AppMainPage ()
        {
            InitializeComponent ();
            MainViewModel mainViewModel = new MainViewModel();
            BindingContext = mainViewModel;
        }

总之,要访问在共享项目中创建的代码文件,Forms XAML需要Droid引用(这只是我的猜测,基于什么工作,什么不)。可能是XAML编译出错了