Xamarin.Forms Shell - 除非在 <Tab> 中才能使用 ShellContent?

Jak*_*eed 5 xamarin xamarin.forms

我已经从 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" />
Run Code Online (Sandbox Code Playgroud)

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

xanimals_sample

作为参考,我尝试将 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 示例解释了以下内容:

ShellContent,表示应用程序中的 ContentPage 对象。每个 ShellContent 对象都是 Tab 对象的子对象。当一个选项卡中存在多个 ShellContent 对象时,这些对象将可以通过顶部选项卡导航。

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

Leo*_*SFT -1

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

\n\n
    \n
  1. 清理解决方案并重建它。

  2. \n
  3. 删除objbin文件并重新启动 Visual Studio。

  4. \n
\n\n

两种方法都会忽略警告并运行它。它可以工作,也许问题稍后会得到解决\xe3\x80\x82

\n