C# 创建自己的内容页时发生Xaml错误

C# 创建自己的内容页时发生Xaml错误,c#,xaml,mvvm,xamarin.forms,C#,Xaml,Mvvm,Xamarin.forms,我自己创建了一个名为BaseContentpage的内容页。当我从我的XAML页面调用它时。它总是给出编译时错误。当我运行应用程序时,它不会发出,它运行平稳。我不能理解这个问题 我的基本内容页 public abstract class BaseContentPage : ContentPage { public readonly BaseViewModel BaseViewModel; protected bool _isNavigated = false; p

我自己创建了一个名为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未找到类型“views:BaseContentPage”。验证是否缺少部件引用,以及是否已生成所有引用的部件。DipsDemoXaml PatientListViewPage.xaml


如何修复此编译时错误首先,您可能需要添加默认构造函数:

 public BaseContentPage () :base()
 {

 }
由于Xaml默认访问this构造函数,因此也可以调用
base()
构造函数,因为这将初始化基类构造函数。(不是强制性的,但在我看来,这是一个很好的实践,主要是当您有一个构造函数参数,希望基类构造函数使用该参数初始化基类时。)

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

因此出现了错误

找不到类型“views:BaseContentPage”。验证是否缺少部件引用,以及是否已生成所有引用的部件。DipsDemoXaml PatientListViewPage.xaml

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


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

你能提供你的示例吗?这样我就可以在我这边测试它了。你的BaseContentPage是抽象的。如何创建这种类型的页面?正如您所说,我删除了摘要,但这无助于消除错误。这是编译时错误,而不是运行时错误。当我向基本内容页添加默认构造函数时,错误会消失并正常工作。我的错误如何消失的概念是什么?我认为它可能导致构造函数重载?我所建议的方式是正确的还是错误的