我想在 AppShell 的 FlyoutItem 中捕获点击事件或命令时遇到问题。目前我有以下 Shell。

<Shell xmlns="http://xamarin.com/schemas/2014/forms" 
        xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
        xmlns:d="http://xamarin.com/schemas/2014/forms/design"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:views="clr-namespace:abc.Views.Courier"
        xmlns:out="clr-namespace:abc.Views"
        xmlns:local="clr-namespace:abc.Views.FlyOut" 
        x:Class="abc.CourierShell">
    <!--<Shell.Resources> 
    <Shell.FlyoutHeader>
        <local:HeaderContentView />
    </Shell.FlyoutHeader>

    <FlyoutItem Title="Home" >
        <Tab>
            <ShellContent ContentTemplate="{DataTemplate views:CourierMainPage}" />
        </Tab>
    </FlyoutItem> 
    <FlyoutItem Title="Logout" >
        <Tab>
            <ShellContent ContentTemplate="{DataTemplate out:LoginPage}" />
        </Tab>
    </FlyoutItem>
    
</Shell>

我想捕获要放置弹出窗口的注销,并在用户单击它时清除一些日志。

到目前为止,我正在尝试研究如何去做,因为我对移动开发非常陌生。


在您的中添加路线ShellContent

<FlyoutItem Title="Logout">
        <Tab>
            <ShellContent Route="LoginPage" ContentTemplate="{DataTemplate out:LoginPage}" />
        </Tab>
</FlyoutItem>

然后在您的 AppShell.xaml.cs 中覆盖它:

protected override async void OnNavigating(ShellNavigatingEventArgs args)
{
    base.OnNavigating(args);

    var PageUri = args.Target.Location.OriginalString;
    if (PageUri == "//LoginPage")
    {
        ShellNavigatingDeferral token = args.GetDeferral();
        bool answer
            = await DisplayAlert("Logout?", "Do you want to logout?", "Yes", "No");
        if (answer)
        {
            token.Complete();
        }
    }
}

应该是“//LoginPage”,也可以在这一行打断点:var PageUri = args.Target.Location.OriginalString;获取LoginPage的值。


请阐明您的具体问题或提供更多详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。

遇到问题 @jianwei-sun-msft 我不想重定向到{DataTemplate out:LoginPage}用户单击“确定”之前。我是这样做的 bool answer = await DisplayAlert("Logout?", "Do you want to logout?", "Yes", "No");

@vcargo 我根据您的需要更新了答案。它运作良好。但愿能帮到你。

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部