You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET MAUI报“不支持嵌套类型:Authentication.FileView”问题求助

MAUI中使用子文件夹视图出现“Nested types are not supported”错误的解决办法

我在MAUI项目里把部分视图整理到子文件夹Project -> _Views -> Authentication下,其中包含FileView.xaml。这个配置正常运行了一个月,最近修改AppShell.xaml后开始报错:Nested types are not supported: Authentication.FileView。试过清理项目、重建、删除bin/obj等临时文件都没用,只要改AppShell.xaml就触发错误。怀疑是路径定义问题,附上相关代码:

AppShell.xaml

<Shell
    x:Class="Project.AppShell"
    xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    xmlns:local="clr-namespace:Project"
    xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
    xmlns:views="clr-namespace:Project._Views"
    xmlns:strings="clr-namespace:Project.Langs"
    xmlns:viewModels="clr-namespace:Project._ViewModels"
...
    <ShellContent
        Title="FileView"
        FlyoutItemIsVisible="False"
        ContentTemplate="{DataTemplate views:Authentication.FileView}"
        Route="route"      
        />
...
</Shell>

FileView.xaml

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:strings="clr-namespace:Project.Langs"
             xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
             x:Class="Project._Views.Authentication.FileView"
             Title="SplashView"
             Shell.NavBarIsVisible="False"
             Shell.FlyoutBehavior="Disabled">

</ContentPage>

问题原因

AppShell.xaml里的命名空间引用仅覆盖了_Views根命名空间,Authentication作为子文件夹对应的是子命名空间,直接用views:Authentication.FileView会被XAML解析器误认为是嵌套类型,而非子命名空间下的独立类。

解决步骤

  1. 添加子命名空间引用
    在AppShell.xaml的根节点中添加Authentication子命名空间的专属引用:
xmlns:authViews="clr-namespace:Project._Views.Authentication"
  1. 修正ShellContent的模板引用
    将原来的views:Authentication.FileView替换为新的命名空间前缀:
<ShellContent
    Title="FileView"
    FlyoutItemIsVisible="False"
    ContentTemplate="{DataTemplate authViews:FileView}"
    Route="route"      
/>
  1. 验证代码文件命名空间
    确保FileView.xaml.cs中的命名空间与XAML定义完全一致:
namespace Project._Views.Authentication;

public partial class FileView : ContentPage
{
    public FileView()
    {
        InitializeComponent();
    }
}
  1. 重新生成项目
    完成修改后,先清理项目,再执行重新生成操作,确保所有更改生效。

额外说明

MAUI完全支持通过子文件夹组织视图,核心是保持文件夹结构与命名空间的对应关系,只要XAML中的命名空间引用与实际类的命名空间匹配,就不会出现此类解析错误。

内容的提问来源于stack exchange,提问作者PhilM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 21:35:04