Xaml XAMARIN阻止点击ShellContent(DataTemplate)后加载页面

Xaml XAMARIN阻止点击ShellContent(DataTemplate)后加载页面,xaml,xamarin,xamarin.forms,xamarin.android,Xaml,Xamarin,Xamarin.forms,Xamarin.android,我在android应用程序上取得了一些进展。目前我正在努力找到解决这个问题的办法 (我前面问题中的代码参考) 选择器执行其工作时,此数据模板将被选择为NavigationHeaderTemplate protected override DataTemplate OnSelectTemplate(object item, BindableObject container) { if (item is ShellGroupItem && list.Contains(((Sh

我在android应用程序上取得了一些进展。目前我正在努力找到解决这个问题的办法

(我前面问题中的代码参考)

选择器执行其工作时,此数据模板将被选择为NavigationHeaderTemplate

protected override DataTemplate OnSelectTemplate(object item, BindableObject container)
{
    if (item is ShellGroupItem && list.Contains(((ShellGroupItem)item).Title))
    {
        // Make sure a header item is not clickable.
        ((ShellGroupItem)item).IsEnabled = false;
        return NavigationHeaderTemplate;
    }
    else
        return NavigationItemTemplate;
}
到目前为止,选择器只为每个NavigationHeaderTemplate检查一次(应该是这样的),而对于NavigationItemTemplate,它会在可见性每次更改时进行检查(应该是这样的,虽然不是很理想,但工作正常)

第一次点击NavigationHeaderTemplate后,它只会更改其项目的可见性(这是正确的),但再次点击后,它会更改可见性并转到AboutPage。 正如您在选择阶段所看到的,NavigationHeaderTemplate应设置为禁用

((ShellGroupItem)item).IsEnabled = false;
但不知怎的,在第二次点击时,它变成了大约一页

<ShellContent Title="Header"  ContentTemplate="{DataTemplate local:AboutPage}"/>

我的问题是: 如何防止页眉加载页面,它应该只更改项目的可见性(项目用于链接)

这不管用

<ShellContent Title="Header"  ContentTemplate="{DataTemplate local:AboutPage}" IsEnabled="False"/>

第一次点击NavigationHeaderTemplate后,它只会更改其项目的可见性(这是正确的),但再次点击后,它会更改可见性并转到AboutPage

<ShellContent Title="Header"  ContentTemplate="{DataTemplate local:AboutPage}"/>
您可以尝试通过以下代码更改FlyoutItemTemplateSelector:

 public class FlyoutItemTemplateSelector : DataTemplateSelector
{
    public DataTemplate NavigationHeaderTemplate { get; set; }
    public DataTemplate NavigationItemTemplate { get; set; }

    protected override DataTemplate OnSelectTemplate(object item, BindableObject container)
    {
        if (item is ShellGroupItem && ((ShellGroupItem)item).Title == "Header")
        {
            // Make sure a header item is not clickable.
            ((ShellGroupItem)item).IsEnabled = false;
            return NavigationHeaderTemplate;
        }
        else
            return NavigationItemTemplate;
    }
}

我点击标题一次或多次,它只会更改其项目的可见性。

我看不出有什么区别,当标题和项目都有相同的页面时,它只会更改其项目的可见性(但如果项目页面不同,那么当您点击项目时,点击标题后,它会从中加载页面)