我想在NavigationView(https://docs.microsoft.com/en-us/windows/uwp/design/controls-and-patterns/navigationview)中的设置项目(按钮)之前添加新项目。我不知道如何添加这样的功能
我试图修改控件的样式但是添加按钮后样式我没有按预期行为。该元素没有导航。 我想要实现的目标:
答案 0 :(得分:5)
您可以使用PaneFooter
将其他内容添加到Settings
按钮上方:
<NavigationView>
<NavigationView.PaneFooter>
<StackPanel Orientation="Vertical">
<NavigationViewItem Icon="SelectAll" Content="Select all" />
<NavigationViewItem Icon="Help" Content="Help" />
</StackPanel>
</NavigationView.PaneFooter>
</NavigationView>
不幸的是,控件不会自动处理此区域中菜单项的选择,因此&#34;所选项突出显示&#34; (左侧的滑动矩形)不会移动到PaneFooter
中的项目,因为控件&#34;不知道&#34;关于他们。
答案 1 :(得分:1)
我发现了一个小故障的解决方法,它正在使用
<NavigationViewItemSeparator Height="{x:Bind Monitor.Spacer, Mode=OneWay}"/>
在您的顶部和底部项目之间,
每当触发视图的SizeChanged
事件时,绑定变量都会更改。具体价值取决于您的其他要素。从视图高度减去它们,您就可以了。
我说这是小故障,因为在调整大小时过渡不平滑。
答案 2 :(得分:1)
在主NavigationView
的{{1}}中添加辅助PaneFooter
。然后在NavigationView
事件处理程序中手动更新选择。示例代码:
Tapped
从<NavigationView x:Name="MainNavigationView"
IsBackButtonVisible="Collapsed"
IsPaneToggleButtonVisible="true"
OpenPaneLength="220"
CompactModeThresholdWidth="0"
ExpandedModeThresholdWidth="0"
MenuItemsSource="{x:Bind PrimaryButtons}"
IsSettingsVisible="False"
IsPaneOpen="true">
<NavigationView.MenuItemTemplate>
<DataTemplate x:DataType="local:HamburgerMenuButtonInfo">
<NavigationViewItem Tapped="MainMenuButton_Tapped">
<ContentPresenter Content="{x:Bind Content}" />
</NavigationViewItem>
</DataTemplate>
</NavigationView.MenuItemTemplate>
<NavigationView.PaneFooter>
<NavigationView x:Name="FooterNavigationView"
IsBackButtonVisible="Collapsed"
IsPaneToggleButtonVisible="False"
OpenPaneLength="220"
CompactModeThresholdWidth="0"
ExpandedModeThresholdWidth="0"
IsSettingsVisible="False"
MenuItemsSource="{x:Bind SecondaryButtons}"
IsPaneOpen="true">
<NavigationView.MenuItemTemplate>
<DataTemplate x:DataType="local:HamburgerMenuButtonInfo">
<NavigationViewItem Tapped="FooterMenuButton_Tapped">
<ContentPresenter Content="{x:Bind Content}" />
</NavigationViewItem>
</DataTemplate>
</NavigationView.MenuItemTemplate>
</NavigationView>
</NavigationView.PaneFooter>
</NavigationView>
事件处理程序中的其他NavigationView
中清除选择:
Tapped
设置项未调用 private void MainMenuButton_Tapped(object sender, Windows.UI.Xaml.Input.TappedRoutedEventArgs e)
{
FooterNavigationView.SelectedItem = null;
}
private void FooterMenuButton_Tapped(object sender, Windows.UI.Xaml.Input.TappedRoutedEventArgs e)
{
MainNavigationView.SelectedItem = null;
}
事件处理程序。最简单的解决方法是添加您自己的设置菜单项,而不是将Tapped
设置为true。