首页 > 解决方案 > 创建我们自己的内容页面时出现 Xaml 错误

问题描述

我创建了一个我自己的内容页面,称为 BaseContentpage。当我从我的 XAML 页面调用它时。它总是给出编译时错误。当我运行它运行顺利的应用程序时,它不会发出。我无法理解这个问题。

我的基本内容页面

  public abstract class BaseContentPage : ContentPage
{
    public readonly BaseViewModel BaseViewModel;

    protected bool _isNavigated = false;

    public BaseContentPage(BaseViewModel baseViewModel)
    {
        BaseViewModel = baseViewModel;
    }

    public abstract void Navigate(SelectedItemChangedEventArgs e);
    protected abstract override void OnAppearing();
    protected override void OnDisappearing()
    {
        _isNavigated = true;
    }
}

我的 XAML 页面

 <views:BaseContentPage
         xmlns="http://xamarin.com/schemas/2014/forms"
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
         x:Class="DipsDemoXaml.Views.PatientListViewPage"
         xmlns:views="clr-namespace:DipsDemoXaml.Views;assembly=DipsDemoXaml.Views"
         Title="{Binding PatientWard.Name}">

它给出了编译时错误

错误 XLS0414 找不到类型“视图:BaseContentPage”。确认您没有丢失程序集引用并且所有引用的程序集都已构建。DipsDemoXaml PatientListViewPage.xaml

如何修复此编译时错误

标签: c#xamlmvvmxamarin.forms

解决方案


首先,您可能想要添加默认构造函数:

 public BaseContentPage () :base()
 {

 }

由于 Xaml 默认访问的 this 构造函数,还调用base()构造函数,因为这将初始化基类构造函数。(不是强制性的,但在我的理解中,这是一个很好的做法,主要是当你有构造函数参数时,你希望你的基类构造函数用来初始化基类。)

现在,由于 XAML 无法找到它,它假定您可能没有正确编译您的项目或没有正确的程序集引用。

因此错误

找不到类型“视图:BaseContentPage”。确认您没有丢失程序集引用并且所有引用的程序集都已构建。DipsDemoXaml PatientListViewPage.xaml

其次,抽象方法是在没有任何实现的情况下声明的。声明它们的目的是让子类提供实现。它们必须在抽象类中声明。声明为抽象的类可能包含也可能不包含抽象方法。它们的创建目的是成为超类。所以我个人认为你的场景不需要一个抽象类(我可能错了)。

祝你好运,如有疑问,请随时回复。


推荐阅读