如何处理NavigationView PaneFooter设置项单击

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何处理NavigationView PaneFooter设置项单击相关的知识,希望对你有一定的参考价值。

添加NavigationView时,“设置”项目会自动添加到NavigationView的底部。由于单击事件似乎无法从XAML访问,因此如何将其添加到此项目?

<Page
    x:Class="My_Project.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:controls="using:Microsoft.Toolkit.Uwp.UI.Controls"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">

    <Grid>
        <NavigationView>
            <NavigationView.PaneFooter>
            </NavigationView.PaneFooter>
        </NavigationView>
    </Grid>
</Page>
答案

如何将单击事件添加到该项目,因为它似乎无法从XAML访问?

[设置]按钮单击事件已由NavigationView.ItemInvoked Event处理。在文档NavigationView中将其提到为“当用户点击导航项目时,导航视图将显示该项目为选中状态并引发ItemInvoked event。”

因此您只需要处理NavigationView.ItemInvoked事件并检查NavigationViewItemInvokedEventArgs.IsSettingsInvoked Property

这里是您可以参考的代码:

 <Grid>
    <NavigationView ItemInvoked="NavigationView_ItemInvoked">
        <NavigationView.PaneFooter>
        </NavigationView.PaneFooter>
    </NavigationView>
</Grid>

在后面的代码中:

 private void NavigationView_ItemInvoked(NavigationView sender, NavigationViewItemInvokedEventArgs args)
    {
        if (args.IsSettingsInvoked == true) 
        {
           //do something

        }
    }

更新

如果要检查项目是否为特定项目,可以在Xaml中为navigationview项目设置标签属性,然后在ItemInvoked事件中检查此属性。

在xaml中:

 <NavigationViewItem Tag="home" Icon="Home" Content="Home"/>

在后面的代码中:

  private void NavigationView_ItemInvoked(NavigationView sender, NavigationViewItemInvokedEventArgs args)
    {
        var navItemTag = args.InvokedItemContainer.Tag.ToString();
        if (navItemTag.Equals("home")) 
        {
            // do something
            Debug.WriteLine("test");
        }
    }

以上是关于如何处理NavigationView PaneFooter设置项单击的主要内容,如果未能解决你的问题,请参考以下文章

c# FileSystemWatcher如何处理多个文件?

如何处理 MaxUploadSizeExceededException

如何处理 UsernameNotFoundException 春季安全

如何处理c#中的错误代码

Akka 如何处理消息版本?

开玩笑测试 - 如何处理 JsonWebToken 响应