0

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

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

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

我试图找到 FlyoutHeaderTemplate 的定义,我在Shell [来自元数据]文件中找到了这个:[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。

4

1 回答 1

0

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

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

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


除非您正在做一些花哨的事情,否则您不需要Template.

简单地尝试:

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

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

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

于 2021-07-05T17:46:22.487 回答