【问题标题】:C#/UWP Hide NavigationView after button selectionC#/UWP 按钮选择后隐藏 NavigationView
【发布时间】:2018-08-24 18:09:59
【问题描述】:

目前我遇到了一个问题,即在导航后单击 AppBarButton 不会最小化 NavView。与选择 NavigationViewItem 后自动最小化 NavView 的 NavView_SelectionChanged void 不同。 我不确定如何在更新内容框架后隐藏 NavView。

这里是 MainPage.xaml.cs

public sealed partial class MainPage : Page
    {

        public MainPage()
        {
            this.InitializeComponent();

            string appName = Windows.ApplicationModel.Package.Current.DisplayName;
        }

        private void NavView_SelectionChanged(Windows.UI.Xaml.Controls.NavigationView sender, Windows.UI.Xaml.Controls.NavigationViewSelectionChangedEventArgs args)
        {
            NavigationViewItem item = args.SelectedItem as NavigationViewItem;

            switch (item.Tag.ToString())
            {
                case "OverView_Page":
                    ContentFrame.Navigate(typeof(Content_Pages.Overview_Page));
                    break;
                case "Bills_Page":
                    ContentFrame.Navigate(typeof(Content_Pages.Bills_Page));
                    break;
                case "BillPayer_Page":
                    ContentFrame.Navigate(typeof(Content_Pages.BillPayer_Page));
                    break;
                case "Transfers_Page":
                    ContentFrame.Navigate(typeof(Content_Pages.Transfers_Page));
                    break;
                case "PayDates_Page":
                    ContentFrame.Navigate(typeof(Content_Pages.PayDates_Page));
                    break;               
            }
        }
       private void SettingsButton_Click(object sender, RoutedEventArgs e)
        {
            ContentFrame.Navigate(typeof(Content_Pages.SettingsPage));
        }
    }

还有 MainPage.XAML AppBarButtons:

<mux:NavigationView.MenuItems>
                <StackPanel Orientation="Horizontal" UseLayoutRounding="False">
                    <AppBarButton Icon="Setting" Margin="1, 2, 0, 0" Tag="Settings_Page" HorizontalAlignment="Center" Width="56.5" Height="56.5" ClickMode="Press" Click="SettingsButton_Click"/> 
                </StackPanel>

所有这些都被正确关闭,所以这些只是相关的位。请原谅我缺乏这方面的知识,还在学习中

【问题讨论】:

  • 您是否在调用Navigate 后尝试将IsPaneOpen 属性设置为false
  • 不幸的是,它不会接受它作为有效选项。再说一次,我可能做得不对
  • 不是一个有效的选项?你试过了吗?
  • 我确实尝试设置 IsPaneOpen。我只是真的不知道我在用它做什么
  • 尝试在SettingsButton_Click中的ContentFrame.Navigate之后添加这一行:NavView.IsPanelOpen = false;

标签: c# uwp uwp-xaml


【解决方案1】:

SettingsButton_Click中调用ContentFrame.Navigate之后添加这一行:

NavView.IsPanelOpen = false;

【讨论】:

  • 谢谢你。感谢您的所有帮助
【解决方案2】:

首先,我建议您在新的 winui 库中使用最新版本的 NavigationViewhttps://docs.microsoft.com/en-us/windows/uwp/design/controls-and-patterns/navigationview

上述文档中的相关部分

NavigationView 可以通过 PaneDisplayMode 属性设置为不同的显示模式:对于您的场景,您可以在值之间切换:LeftLeftCompact .

每当用户单击应用栏按钮时,将调用其单击事件,在该事件中,您可以将 PaneDisplayMode 属性设置为您想要的值,这样您就可以控制 NavigationView 隐藏器何时显示或任何您想要的基本上想要它做你可以用这个新版本的控件做很多事情,阅读上面的文档链接以获得更详细的文档。希望这会有所帮助。

【讨论】:

  • 非常感谢。我已经尽我所能阅读并阅读了这些文件。 PaneDisplayMode 已在 XAML 中预定义。我已经覆盖了默认值,只使用“left minimum”。因此,我尝试在设置 IsPaneOpenProperty 时使用 mm8s 建议。我只是无处可去,因为文档对于我需要的东西来说非常简单。
  • 我用它来理解属性和获取/设置:docs.microsoft.com/en-us/dotnet/csharp/programming-guide/…。我只是不确定如何在 IsPaneOpenProperty 甚至 PaneDisplayMode 中实现这一点
  • @Batteredburrito 你不需要深入研究 getter 和 setter,你只需要简单地设置属性,如“MyNavigationView.PaneDisplayMode = ur desired value”你可以看到如何在 xaml 或即使在我在答案中提供的文档中的 c# 中
  • 谢谢。我会保存所有这些,因为我知道它会在以后的项目中有所帮助。非常感谢您在这方面的时间
猜你喜欢
  • 1970-01-01
  • 2015-09-20
  • 1970-01-01
  • 1970-01-01
  • 2019-05-18
  • 2012-08-06
  • 2013-03-04
  • 1970-01-01
  • 2016-06-19
相关资源
最近更新 更多