我希望我的页面类继承自以下基类:
public abstract class BaseContentPage<T> : ContentPage where T : BaseViewModel
{
public BaseContentPage(T viewModel, string pageTitle)
{
BindingContext = ViewModel = viewModel;
Title = pageTitle;
}
protected T ViewModel { get; }
}
public partial class MainPage : BaseContentPage<MainVm>
{
public MainPage(MainVm vm) : base(vm, "Hello")
{
InitializeComponent();
}
}
页面类是部分的,我想,MAUI 会生成一些具有不同父类的隐藏代码。然后我收到以下错误:
CS0263:“类型”的部分声明不得指定不同的基类
有没有办法指定生成的部分类的父类?
编辑
- 首先,我保留了原始标记,它生成不同的基类并导致 CS0263 错误:
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:m="clr-namespace:MyProject.Models"
xmlns:vm="clr-namespace:MyProject.ViewModels"
x:Class="MyProject.Pages.MainPage"
xmlns:local="clr-namespace:MyProject">
<BaseContentPage.Content>
<StackLayout>
<Label Text="Welcome to MyProject!"
VerticalOptions="CenterAndExpand"
HorizontalOptions="CenterAndExpand" />
</StackLayout>
</BaseContentPage.Content>
</ContentPage>
- 然后我尝试使用@JuanSturla 提到的带有TypeArguments 的通用基类,但这会导致未知的类错误:
<BaseContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:m="clr-namespace:MyProject.Models"
xmlns:vm="clr-namespace:MyProject.ViewModels"
x:Class="MyProject.Pages.MainPage"
x:TypeArguments="vm:MainVm"
xmlns:local="clr-namespace:MyProject">
<BaseContentPage.Content>
<StackLayout>
<Label Text="Welcome to MyProject!"
VerticalOptions="CenterAndExpand"
HorizontalOptions="CenterAndExpand" />
</StackLayout>
</BaseContentPage.Content>
</BaseContentPage>