【问题标题】:How to Resolve Exception: Cannot create an instance of "WindowsPage"如何解决异常:无法创建“WindowsPage”的实例
【发布时间】:2016-05-10 08:56:16
【问题描述】:

这里是 Xamarin 表单的全新用户,并尝试使用该包开始跨平台应用程序开发。然而,一出门我似乎遇到了一个在其他地方被问过几次但我还没有真正看到实际回应的问题。目前我正在尝试在便携式表单/PCL 设置中使用 UWP/通用 Windows/Windows 10 用户界面。

这是 Microsoft Visual Studio 2015 Xaml 设计器中的无法创建 WindowsPage 实例错误消息。我正在遵循https://developer.xamarin.com/guides/xamarin-forms/platform-features/windows/installation/universal/ 的指南,所以我在将页面标签从 Page 更改为 forms:WindowsPage 之前,在 xaml 文件中添加了 "xmlns:forms="using:Xamarin.Forms.Platform.UWP" 行,从而引用了 xamarin表单包。我确实将所有 NuGet 包更新到最新版本。Xamarin 表单目前类似于 2.2。

我最初安装了 VS2015 Xamarin 软件包的默认值,我只是尝试使用包含的每个额外组件来修改该安装,所以我认为我没有遗漏任何东西。我相信 Xamarin 安装正确,因为它显示在“帮助”->“Xamarin”菜单中,我可以从 Xamarin 表单包中选择新的解决方案,但我不确定是什么导致了问题。

这是 XAML 代码

<forms:WindowsPage
    x:Class="SoloPathfinderPCL.UWP.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:forms="using:Xamarin.Forms.Platform.UWP"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:SoloPathfinderPCL.UWP"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">

</forms:WindowsPage>

这是我的异常堆栈跟踪:无法创建“WindowsPage”的实例。

at Microsoft.VisualStudio.DesignTools.Platform.InstanceBuilders.InstanceBuilderOperations.InstantiateType(Type type, Boolean supportInternal)
   at Microsoft.VisualStudio.DesignTools.Platform.InstanceBuilders.ClrObjectInstanceBuilder.InstantiateTargetType(IInstanceBuilderContext context, ViewNode viewNode)
   at Microsoft.VisualStudio.DesignTools.Platform.InstanceBuilders.ClrObjectInstanceBuilder.Instantiate(IInstanceBuilderContext context, ViewNode viewNode)
   at Microsoft.VisualStudio.DesignTools.WindowsXamlDesigner.InstanceBuilders.FrameworkElementInstanceBuilder.Instantiate(IInstanceBuilderContext context, ViewNode viewNode)
   at Microsoft.VisualStudio.DesignTools.WindowsXamlDesigner.InstanceBuilders.UserControlInstanceBuilder.Instantiate(IInstanceBuilderContext context, ViewNode viewNode)
   at Microsoft.VisualStudio.DesignTools.Platform.InstanceBuilders.ViewNodeManager.CreateInstance(IInstanceBuilder builder, ViewNode viewNode)

希望有人可以为我和其他遇到此问题的人指出正确的方向。谢谢。

【问题讨论】:

标签: xamarin visual-studio-2015 xamarin.forms targetinvocationexception


【解决方案1】:

看起来这个问题来自 Xamarin Forms,根据 Xamarin Forms 目前不支持 Visual Studio 表单设计器,如果您转到 website 它指出“注意:Xamarin.Forms 不兼容与预先存在的 XAML 视觉设计器。”。不幸的是,您不能简单地改变:

public partial class MainPage : ContentPage

public partial class MainPage : Page

这将破坏整个目的。您本质上所做的是源自 WPF 而不是 Xamarin 表单。 ContentPage 是 WPF 页面的 Xamarin Forms 版本。另一件需要注意的事情是,即使您能够让设计器加载您也不想使用“工具箱”中的任何控件,这些也仅适用于 WPF。如果您要使用任何 .Net 控件,它将在 Windows 下运行,但如果您尝试在不同的平台下运行它,它会崩溃,因为 Xamarin Forms 最终会将控件映射到本机操作系统的控件以及Toolbox 仅适用于 Windows 操作系统。

【讨论】:

    猜你喜欢
    • 2016-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多