无法在 Xamarin 表单应用程序中添加弹出页脚

问题描述

我有一个 xamarin 表单应用程序,我想在弹出菜单添加一个页脚。阅读官方文档后应该很简单,只需在 AppShell.xaml 中添加几行,如下所示:

<Shell.FlyoutFooterTemplate>
    <DataTemplate>
        <Label HeightRequest="300" BackgroundColor="Red"/>
    </DataTemplate>
</Shell.FlyoutFooterTemplate>

当我在一个新项目中尝试它时,这工作得很好,但由于某种原因,它在我当前的应用程序中不起作用,并出现此错误错误 XLS0415 在“Shell”类型中找不到可附加属性“FlyoutFooterTemplate”。

我试图找到 FlyoutHeaderTemplate 的定义,我在 Shell [from Metadata] 文件中找到了它: [1]:https://i.stack.imgur.com/xqZub.png

public Shell();
...
public DataTemplate FlyoutHeaderTemplate { get; set; }
public FlyoutHeaderBehavior FlyoutHeaderBehavior { get; set; }
public object FlyoutHeader { get; set; }

Header 和 Footer 应该有一个相似的定义,但 Header 只有一个。该文件无法编辑,我也无法找到它。任何想法为什么缺少页脚的定义,如何添加它或解决方法

PS:从 C# 代码添加页脚也不起作用,我尝试清理/重建和重置 PC 和 VS。

解决方法

首先,确认您可以添加一个简单的Header:

<Shell.FlyoutHeader>
    <Label Text="This is the header." />
</Shell.FlyoutFooter>

如果这不起作用,那么您在做一些根本性的错误 - 发布 <Shell> XAML 的代码,您在其中添加了这些行。确保包含这些行,以显示它们在 XAML 中的位置。确保它们位于 <Shell></Shell> 之间,但没有嵌套在某个更深的节点内。例如,它们不得位于 <StackLayout><ContentView> 或其他容器内 - 它们必须是 <Shell> 的直接子代。


除非您正在做一些奇特的事情,否则您不需要 Template

简单地尝试:

<Shell.FlyoutFooter>
    <Label HeightRequest="300" BackgroundColor="Red"/>
</Shell.FlyoutFooter>

如果上述 1) 有效,但 2) 无效,则您的项目引用的是过时版本的 Shell。修正:

A.检查该项目的 Xamarin.Forms nuget 不需要更新。 (解决方案/管理 Nuget。)
B. 或删除 binobj 文件夹。然后重建解决方案。
C. 最坏的情况,从一个新项目开始,您可以在其中使用该功能,然后重新添加所有文件。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...