是否可以更改 NavigationView 的设置项的图标和文本?

Is it possible to change NavigationView's settings item's icon and text?

基本上在使用 NavigationView 时,设置项总是显示为齿轮图标和 "Settings" 的文本。有可能改变这两个东西吗?

是的,您可以编辑控件的默认模板来修改设置区域的样式。您可以在那里找到以下内容:

<NavigationViewItem x:Name="SettingsNavPaneItem" Grid.Row="5">
    <NavigationViewItem.Icon>
        <SymbolIcon Symbol="Setting"/>
    </NavigationViewItem.Icon>
</NavigationViewItem>

所以更改图标很容易。关于文本,您也可以在此处更改它,但我不确定控件是否不会覆盖它并且无法验证,因为我不在我的电脑旁。尝试使用 NavigationViewSettingsItem 属性 并转换为 NavigationViewItem.

更新:更改文本

这是自定义设置项文本的方法,我不知道为什么我以前没有考虑过 - 创建自定义 NavigationView 并在 OnApplyTemplate 中手动更新文本:

public class CustomizableNavigationView : NavigationView
{
    protected override void OnApplyTemplate()
    {
        base.OnApplyTemplate();
        var settingsItem = (NavigationViewItem)GetTemplateChild("SettingsNavPaneItem");
        settingsItem.Content = "Custom text";
    }
}

更新:WinUI

今后,推荐的解决方案将是使用 WinUI library and its NavigationView control。这允许您在 PaneFooter 区域添加多个 NavigatoinItem,并且这些是完全可配置的。除此之外,新控件不仅支持经典的汉堡菜单显示,还可以水平显示在视图顶部,这是现在推荐的大屏幕导航模式。

这是我更改文本的方式:

private void Navigation_Loaded(object sender, RoutedEventArgs e)
{
    var settings = (Microsoft.UI.Xaml.Controls.NavigationViewItem) Navigation.SettingsItem;
    settings.Content = "Other settings";
}

导航是我的控制 <NavigationView x:Name="Navigation" /> XAML。

我的回答基于@Andreas Fredriksson 的回答,但也包含图标更改:

private void Navigation_Loaded(object sender, RoutedEventArgs e)
{
      var settings = (NavigationViewItem)Navigation.SettingsItem;
      settings.Content = "Help";
      settings.Icon = new SymbolIcon((Symbol)0xE897); 
}