【问题标题】:Xaml Error when creating our own content page创建我们自己的内容页面时出现 Xaml 错误
【发布时间】:2019-08-01 09:05:00
【问题描述】:

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

如何修复这个编译时错误

【问题讨论】:

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

标签: c# xaml mvvm xamarin.forms


【解决方案1】:

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

 public BaseContentPage () :base()
 {

 }

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

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

因此错误

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-14
    • 1970-01-01
    • 2022-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多