我已经从 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 之外)。
最佳答案
我遇到了同样的问题,我尝试了以下方法:
obj
和bin
文件,然后重新启动Visual Studio。 两种方法都忽略警告并运行它。它有效,也许问题会在以后修复。
关于Xamarin.Forms Shell - 除非在 <Tab> 中才能使用 ShellContent?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57526840/