创建自己的内容页面时出现Xaml错误

时间:2019-03-11 04:34:20

标签: c# xaml mvvm xamarin.forms

我创建了自己的名为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

如何解决此编译时错误

1 个答案:

答案 0 :(得分:2)

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

 public BaseContentPage () :base()
 {

 }

由于Xaml默认访问此构造函数,因此也调用base()构造函数,因为它将初始化基类构造函数。 (不是强制性的,但对我而言,这是一个很好的实践,主要是当您具有要让基类构造函数用来初始化基类的构造函数参数时。)

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

出现错误

  

未找到类型“视图:BaseContentPage”。验证您没有丢失程序集引用,并且所有引用的程序集均已构建。 DipsDemoXaml PatientListViewPage.xaml

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

祝您好运,如有查询,请随时恢复。