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();
,执行返回,然后由于未创建初始页而崩溃
见这里: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编译出错了