xamarin Shell应用程序中MAUI选项卡的OnClicked事件

hgc7kmma  于 2023-04-27  发布在  Shell
关注(0)|答案(1)|浏览(287)

我有一个MAUI Shell应用程序,我正在使用一个TabBar。我有一个标题,我已经创建,将显示在多个标签和直接用户到通知页面。
如果用户单击标题链接,它会很好地路由到通知页面。问题是如果用户单击当前活动的选项卡返回到什么也没有发生。我正在尝试从选项卡捕获OnClick事件或其他内容,以返回到根目录或清除通知页面。
我发现有些人试图在Xamarin中使用自定义渲染器解决这个问题,但我想知道是否有人在MAUI中遇到或解决了这个问题。
为了澄清的问题,我有一个标签上的用户点击一个链接被路由到一个新的页面,但点击该活动标签再次不回到该标签。
我找不到一个事件触发器,以便添加一些逻辑来强制导航回选项卡或页面刷新。
AppShell.xaml.cs

public AppShell()
{
    InitializeComponent();

    Routing.RegisterRoute("Notifications", typeof(Notifications));
    Routing.RegisterRoute("home", typeof(MainPage));
}

AppShell.Xaml:

<TabBar>
    <Tab Title="{x:Static resources:Lang.Home}" Icon="{StaticResource HomeTab}" >
        <ShellContent Route="main" ContentTemplate="{DataTemplate local:MainPage}" />
    </Tab>

    <Tab Title="{x:Static resources:Lang.Shop}" Icon="shop.png" CurrentItem="{x:Reference partSearchPage}">
        <ShellContent Title="{x:Static resources:Lang.SearchInventory}" x:Name="inventorySearchPage" Route="inventorysearch"  ContentTemplate="{DataTemplate inv:InventorySearch}" />
    </Tab>

    <Tab Title="{x:Static resources:Lang.Cart}" Icon="{StaticResource CartTab}">
        <ShellContent Route="cart" ContentTemplate="{DataTemplate cart:CartPage}" />
    </Tab>
</TabBar>

HeaderBar.xaml.cs

private async void NotificationsClicked(object sender, EventArgs args)
{
    await Shell.Current.GoToAsync("Notifications");
}
dzhpxtsq

dzhpxtsq1#

我前一段时间走进了这个。看起来这只是Android的情况。因为在我的iOS设备上,一切都按预期工作。
您可以循环:
Shell.Current.Navigation.NavigationStack
删除每一页,从最后一页开始,跳过第一页。
你可以检查这个答案:https://stackoverflow.com/a/73924870/6643940
我不完全是这样做的,但这是一个很好的开始。

相关问题