可以更改NavigationView的设置项目的图标和文本吗?

时间:2018-07-18 11:50:55

标签: uwp uwp-xaml

基本上,在使用NavigationView时,设置项目始终显示为齿轮图标和“设置”文本。可以改变这两件事吗?

3 个答案:

答案 0 :(得分:2)

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

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

因此更改图标很容易。关于文本,您也可以在此处进行更改,但是我不确定控件是否不会覆盖它,并且由于我不在电脑上而无法验证。尝试使用SettingsItem的{​​{1}}属性并强制转换为NavigationView

更新:更改文本

您可以通过以下方式自定义设置项文本,我不知道为什么以前没有考虑过-创建自定义NavigationViewItem并在NavigationView中手动更新文本:< / p>

OnApplyTemplate

更新:WinUI

展望未来,推荐的解决方案是使用WinUI library and its NavigationView control。这样,您就可以在public class CustomizableNavigationView : NavigationView { protected override void OnApplyTemplate() { base.OnApplyTemplate(); var settingsItem = (NavigationViewItem)GetTemplateChild("SettingsNavPaneItem"); settingsItem.Content = "Custom text"; } } 区域中添加多个NavigatoinItem,并且它们是完全可配置的。除此之外,新控件不仅支持经典的汉堡包菜单显示,而且还可以在视图顶部水平显示,这是现在在大屏幕上推荐的导航模式。

答案 1 :(得分:0)

这是我更改文字的方式:

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

导航是我在XAML中的控件<NavigationView x:Name="Navigation" />

答案 2 :(得分:0)

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

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