c# - 创建我们自己的内容页面时出现 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
如何修复此编译时错误
解决方案
首先,您可能想要添加默认构造函数:
public BaseContentPage () :base()
{
}
由于 Xaml 默认访问的 this 构造函数,还调用base()
构造函数,因为这将初始化基类构造函数。(不是强制性的,但在我的理解中,这是一个很好的做法,主要是当你有构造函数参数时,你希望你的基类构造函数用来初始化基类。)
现在,由于 XAML 无法找到它,它假定您可能没有正确编译您的项目或没有正确的程序集引用。
因此错误
找不到类型“视图:BaseContentPage”。确认您没有丢失程序集引用并且所有引用的程序集都已构建。DipsDemoXaml PatientListViewPage.xaml
其次,抽象方法是在没有任何实现的情况下声明的。声明它们的目的是让子类提供实现。它们必须在抽象类中声明。声明为抽象的类可能包含也可能不包含抽象方法。它们的创建目的是成为超类。所以我个人认为你的场景不需要一个抽象类(我可能错了)。
祝你好运,如有疑问,请随时回复。
推荐阅读
- python - 为什么在熊猫中的数据框列(对象类型系列)上没有参数的all()返回列中的最后一个值
- python - 张量板:找不到命令,当我使用
- java - Java如何制作一个可以有一个或多个作者的书类
- android - 如何使用 Flutter 实现类似 Sliver AppBar 的“One UI”
- javascript - 个人资料卡超出浏览器窗口
- reactjs - 刷新页面时重定向到另一个页面 (F5)
- html - 根据最宽的一个为多个垂直元素设置相同的宽度
- c# - C#:错误 CS9010“不允许主构造函数主体”
- android - Kotlin - 互联网和位置权限问题
- php - 如何使用 java + php 脚本从 android studio 编辑 mysql 数据库中的值?