XML 命名空间“http://xamarin.com/schemas/2014/forms”中的未知类型“ContentPage”

Posted

技术标签:

【中文标题】XML 命名空间“http://xamarin.com/schemas/2014/forms”中的未知类型“ContentPage”【英文标题】:Unknown type 'ContentPage' in XML namespace 'http://xamarin.com/schemas/2014/forms' 【发布时间】:2017-05-13 05:30:33 【问题描述】:

我正在 MVVM 中编写应用程序。 我的 MainPage.xaml 看起来像这样:

    <?xml version="1.0" encoding="utf-8" ?>
    <ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
                 xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
                 xmlns:view="using:FIARView"
                 xmlns:controls="using:DLToolkit.Forms.Controls;assembly=DLToolkit.Forms.Controls.FlowListView"
                 x:Class="clr-namespace:FIARView.MainPage">
...

我在这个 xaml 文件中使用的所有内容都有一个错误: 例如:

Unknown type 'ContentPage' in XML namespace 'http://xamarin.com/schemas/2014/forms'
Unknown type 'Button' in XML namespace 'http://xamarin.com/schemas/2014/forms'

等等。 我试图寻找答案,但没有找到。我该如何解决这个问题?

【问题讨论】:

您是否引用了 Xamarin 库? 是的,我参考了 Xamarin.Forms.Core、Platform、Platform.WinRT 和 Xamarin.Forms.Xaml。 然后尝试构建;听起来您只是在启动项目方面遇到了问题。 清理和重建整个解决方案没有帮助。 【参考方案1】:

您可能在资源管理器中创建了一个带有复制粘贴的页面并包含在项目中,因此您错过了这些 xaml 属性:

为“嵌入式资源”构建操作 “MSBuild:UpdateDesignTimeXaml”的自定义工具:

【讨论】:

这正是我的问题。谢谢! 你是救生员。谢谢。【参考方案2】:

我认为您遇到的问题与 Xaml 无关。更有可能是您背后的代码有问题。

FIARView.MainPage 应该看起来像

using Xamarin.Forms;

namespace FAIRVIEW

    public partial class MainPage : ContentPage
    
        public MainPage()
        
            InitializeComponent();
        
    

另一种可能是你的代码在基类后面。

当您说您使用 MVVM 时,我猜这意味着您使用诸如 MVVMCross 之类的东西。其中一些希望您将代码后面的基类更改为 ContentPage 以外的东西。执行此操作时,您还需要将 Xaml 中的标记更改为新的基类。

【讨论】:

【参考方案3】:

确保您在 PCL/Shared 项目而不是 WinRT 平台项目中编辑 XAML。 Here 也是一个帮助您入门的教程。

Windows 项目也使用 XAML,因此可能会造成混淆。对于 Xamarin.Forms,您将在共享(PCL 或共享资产)项目中创建 UI,它的类型特定于 Forms。

【讨论】:

以上是关于XML 命名空间“http://xamarin.com/schemas/2014/forms”中的未知类型“ContentPage”的主要内容,如果未能解决你的问题,请参考以下文章

项目的默认 XML 命名空间必须是 MSBuild XML 命名空间

从 XML 中删除多个 XML 命名空间

XML 命名空间有啥用?

Atitit xml命名空间机制

XML 命名空间

具有显式默认命名空间的 XML 文档的 XPath 和命名空间规范