是否可以更改 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>
所以更改图标很容易。关于文本,您也可以在此处更改它,但我不确定控件是否不会覆盖它并且无法验证,因为我不在我的电脑旁。尝试使用 NavigationView
的 SettingsItem
属性 并转换为 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);
}
基本上在使用 NavigationView 时,设置项总是显示为齿轮图标和 "Settings" 的文本。有可能改变这两个东西吗?
是的,您可以编辑控件的默认模板来修改设置区域的样式。您可以在那里找到以下内容:
<NavigationViewItem x:Name="SettingsNavPaneItem" Grid.Row="5">
<NavigationViewItem.Icon>
<SymbolIcon Symbol="Setting"/>
</NavigationViewItem.Icon>
</NavigationViewItem>
所以更改图标很容易。关于文本,您也可以在此处更改它,但我不确定控件是否不会覆盖它并且无法验证,因为我不在我的电脑旁。尝试使用 NavigationView
的 SettingsItem
属性 并转换为 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);
}