Xamarin Forms:System.Reflection.TargetInvocationException

时间:2016-11-12 14:13:54

标签: c# ios xamarin xamarin.forms

我一直收到这个错误,我基本上已经复制了this tutorial的所有代码,所以我不明白它为什么不在这里工作。

 namespace BHASIVCBULLETIN1 {
        using System;
        using Xamarin.Forms;
        using Xamarin.Forms.Xaml;


        public partial class App : global::Xamarin.Forms.Application {

            [System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Forms.Build.Tasks.XamlG", "0.0.0.0")]
            private void InitializeComponent() {
    -->           this.LoadFromXaml(typeof(App));
            }
        }
    }

以上是错误代码,它是在运行时生成的。

<?xml version="1.0" encoding="UTF-8"?>
<p:ListDataPage   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
                  xmlns:p="clr-namespace:Xamarin.Forms.Pages;assembly=Xamarin.Forms.Pages" 
                  x:Class="BHASIVCBULLETIN1.LinkerPage"
                  Title="Sessions" StyleClass="Events">

 <p:ListDataPage.DataSource>
    <p:JsonDataSource Source="http://demo3143189.mockable.io/sessions" />
</p:ListDataPage.DataSource>

这是链接器页面代码

using System;
using System.Collections.Generic;
using Xamarin.Forms.Pages;
using Xamarin.Forms;

namespace BHASIVCBULLETIN1
{
    public partial class LinkerPage : Xamarin.Forms.Pages.ListDataPage
    {
        public LinkerPage()
        {
            InitializeComponent();

        }
    }
}

这是我的主要应用程序c#code

using Xamarin.Forms;
using System.Collections.Generic;
namespace BHASIVCBULLETIN1 {
public partial class App : Application
{
    public App()
    {
        InitializeComponent();

        MainPage = new NavigationPage(new LinkerPage());
    }

    protected override void OnStart()
    {
        // Handle when your app starts
    }

    protected override void OnSleep()
    {
        // Handle when your app sleeps
    }

    protected override void OnResume()
    {
        // Handle when your app resumes
    }
}

}

这是我的主要应用程序的xml代码

<Application xmlns="http://xamarin.com/schemas/2014/forms"
  xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
  xmlns:mytheme="clr-namespace:Xamarin.Forms.Themes;assembly=Xamarin.Forms.Theme.Dark" 
        x:Class="BHASIVCBULLETIN1.App">
    <Application.Resources>
        <!-- Application resource dictionary -->
         <ResourceDictionary MergedWith="mytheme:DarkThemeResources" />
        <!-- above xml code rferences the datapages nuget packages and resources that allow the methods to be used to create the GUI-->
    </Application.Resources>
</Application>

3 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,并且还明确遵循了说明。

看起来:     <ResourceDictionary MergedWith="mytheme:DarkThemeResources"/> 以某种方式失败并导致App对象未定义。 我开始认为这是Xamarin.Forms中的一个错误。需要解决的问题。我的理解是它是一个“预发布”版本,所以它可能仍然不可靠。

更多... 我使用由Xamarin新的空交叉平台模板创建的默认引用,使用NEW空Xamarin表单项目(VS2015)测试了主题功能。这引用了Xamarin.Forms和Xamarin.forms.pages版本2.3.0.38-pre2(在我的例子中)。主题与这些参考文献一起使用。

在对表格和页面(2.3.3.168)应用最新的Nuget更新后,主题预览不再有效并再现您指出的相同错误。在我看来,Xamarin.Forms.Themes根本不适用于最新发布的Xamarin组件。

答案 1 :(得分:0)

不确定这是否是拼写错误但标签<p:ListDataPage>未关闭

答案 2 :(得分:0)

在更新到Xamarin.Forms.Themes 1.0.0.43-pre1后,我还遇到了使用Xamarin.Forms 2.3.3.168时崩溃的应用。这仅适用于Android,因此我不确定此问题是否也会在iOS或WP版本上发生。我从它工作正常的Xamarin.Forms 2.3.3.152-pre2升级了。

<prism:PrismApplication xmlns="http://xamarin.com/schemas/2014/forms"
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
         xmlns:prism="clr-namespace:Prism.Unity;assembly=Prism.Unity.Forms"
         xmlns:mytheme="clr-namespace:Xamarin.Forms.Themes;assembly=Xamarin.Forms.Theme.Light"
         x:Class="myApp.App">
    <Application.Resources>
        <!-- Xamarin.Forms.Themes 1.0.0.43-pre1 is broken with Xamarin.Forms 2.3.3.168 -->
        <!--<ResourceDictionary MergedWith="mytheme:LightThemeResources">-->
        <ResourceDictionary>
            <!-- theme definitions -->
        </ResourceDictionary>
    </Application.Resources>
</prism:PrismApplication>

我的解决方案目前是删除对{Xamarin.Forms.Theme的"MergedWith"引用,直到修复程序发布。或者,将XF版本回滚到与Themes包兼容的版本。