我的 dotnet maui 项目刚刚失败。 AppShell 无法找到 LoginPage 并将其设置为其 ContentTemplate。当我开始这个项目时一切正常

问题描述 投票:0回答:2

我在 dotnet maui intelisense 中遇到问题。调试器说:错误 XFC0000 无法解析类型“clr-namespace:MAUI.Views:LoginPage”。当我添加新页面时,问题就消失了,例如 NewPage.xaml。它可以找到我添加的那个,但找不到以前在那里的那些。谢谢你的时间。

我多次尝试构建和恢复项目。它只是说 LoginPage 无法解析。我多次检查 LoginPage 在 Views 命名空间中。

代码:

登录页面.xaml.cs:

using MAUI.ViewModel;
namespace MAUI;

public partial class LoginPage : ContentPage
{
    public LoginPage(LoginPageViewModel vm)
    {
        InitializeComponent();

        BindingContext = vm;
    }
}

当我将命名空间从 MAUI 更改为 MAUI.Views 时,方法 InitializeComponent() 抛出错误:名称 InitializeComponent 在其当前上下文中不存在。对于命名空间 MAUI.Views 中的其余页面,我现在可以在 XAML 中使用它们。看起来 intelisense 不知道它们但是当我编译项目并运行它时一切正常。

.net mvvm maui xml-namespaces
2个回答
0
投票

在您的代码中,LoginPage 的命名空间是 MAUI 而不是 MAUI.Views。所以 LoginPage.xaml.cs 应该是:

using MAUI.ViewModel;
namespace MAUI.Views;

public partial class LoginPage : ContentPage
{
    public LoginPage(LoginPageViewModel vm)
    {
        InitializeComponent();

        BindingContext = vm;
    }
}

LoginPage.xaml 应该是:

<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="Maui.Views.LoginPage">

0
投票

我认为您只需要更改 AppShell 中的引用即可。

页面位于“MAUI”命名空间中:

namespace MAUI;

public partial class LoginPage : ContentPage

所以这使它成为“MAUI.LoginPage”。在你的 AppShell 的顶部放这个:

xmlns:views="clr-namespace:MAUI"

然后在 AppShell 页面本身,您可以这样做:

<ShellItem FlyoutItemIsVisible="False" x:Name="LoginPageShellItem">
  <ShellContent ContentTemplate="{DataTemplate views:LoginPage}" Route="LoginPage" />
</ShellItem>
© www.soinside.com 2019 - 2024. All rights reserved.