NavigationView和其他设置按钮

时间:2018-02-20 12:20:28

标签: c# uwp uwp-xaml

我想在NavigationView(https://docs.microsoft.com/en-us/windows/uwp/design/controls-and-patterns/navigationview)中的设置项目(按钮)之前添加新项目。我不知道如何添加这样的功能

我试图修改控件的样式但是添加按钮后样式我没有按预期行为。该元素没有导航。 我想要实现的目标:

enter image description here

3 个答案:

答案 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;关于他们。

Selection

答案 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。