我已经从 Microsoft 下载并打开了 Xamarin.Forms Shell 示例项目 Xanimals,但它从 AppShell.xaml 抛出构建错误。

错误是:

错误 XLS0503 无法将“ShellContent”类型的值添加到“IList”类型的集合或字典中。 Xaminals AppShell.xaml 135

错误 XLS0503 无法将“MenuItem”类型的值添加到“IList”类型的集合或字典中。 Xaminals AppShell.xaml 158

无效类型:预期类型为“ShellSection”,实际类型为“ShellContent”。

无效类型:预期类型为“ShellSection”,实际类型为“MenuItem”。

我最初是在创建新的 Xamarin Shell 应用程序并遵循 Microsoft 的相应指南时发现这个问题的,其中他们的示例代码描述了将一些 ShellContent 元素直接放在应用程序的 AppShell.xaml 文件中的 FlyoutItem 下。

以下是 Microsoft Xanimals 示例项目中的相关代码部分:

<FlyoutItem Route="animals"
            Title="Animals"
            FlyoutDisplayOptions="AsMultipleItems">
    <Tab Title="Domestic"
         Route="domestic"
         Icon="paw.png">
        <ShellContent Route="cats"
                      Style="{StaticResource DomesticShell}"
                      Title="Cats"
                      Icon="cat.png"
                      ContentTemplate="{DataTemplate views:CatsPage}" />
        <ShellContent Route="dogs"
                      Style="{StaticResource DomesticShell}"
                      Title="Dogs"
                      Icon="dog.png"
                      ContentTemplate="{DataTemplate views:DogsPage}" />
    </Tab>
    <ShellContent Route="monkeys"
                  Style="{StaticResource MonkeysShell}"
                  Title="Monkeys"
                  Icon="monkey.png"
                  ContentTemplate="{DataTemplate views:MonkeysPage}" />
    <ShellContent Route="elephants"
                  Style="{StaticResource ElephantsShell}"
                  Title="Elephants"
                  Icon="elephant.png"
                  ContentTemplate="{DataTemplate views:ElephantsPage}" />
    <ShellContent Route="bears"
                  Style="{StaticResource BearsShell}"
                  Title="Bears"
                  Icon="bear.png"
                  ContentTemplate="{DataTemplate views:BearsPage}" />
</FlyoutItem>

<ShellContent Route="about"
              Style="{StaticResource AboutShell}"
              Title="About"
              Icon="info.png"
              ContentTemplate="{DataTemplate views:AboutPage}" />

<MenuItem Text="Random"
          Icon="random.png"
          Command="{Binding RandomPageCommand}" />
<MenuItem Text="Help"
          Icon="help.png"
          Command="{Binding HelpCommand}"
          CommandParameter="https://docs.microsoft.com/xamarin/xamarin-forms/app-fundamentals/shell" />

这是上述代码的屏幕截图,Intellisense 在问题区域下划线:

作为引用,我尝试将 Xamarin.Forms NuGet 引用更新到 4.0.0.425677 和 4.1.0.673156 之间的每个版本,但仍然没有运气。
我使用的是 Visual Studio Professional 2019 版本 16.1.2 和 .NET Framework 版本 4.7.03056

微软的 Xanimals 示例代码是错误的,还是我遗漏了什么?
同样,我使用的是开箱即​​用的 Xanimals 示例代码,没有任何更改。

编辑:
Microsoft 自己的 Shell 示例解释了以下内容:



然而,尽管断言 Every ShellContent 对象是 Tab 对象的子对象,但他们的代码示例似乎与此规则相矛盾(在屏幕截图中,ShellContents 在 Tab 之外,也在 FlyoutItem 之外)。

最佳答案

我遇到了同样的问题,我尝试了以下方法:

  • 清理解决方案并重建它。
  • 删除objbin文件,然后重新启动Visual Studio。

  • 两种方法都忽略警告并运行它。它有效,也许问题会在以后修复。

    关于Xamarin.Forms Shell - 除非在 <Tab> 中才能使用 ShellContent?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57526840/

    10-10 18:43