none
WPF页面导航栏隐藏问题 RRS feed

  • 问题

  • 主页面用Fram,导航到一个页面后,我在这个Page页面用this.NavigationService.Navigate(page);导航到一个新的页面,已经设置ShowsNavigationUI="False",但是页面上部的导航依旧显示,并没隐藏,所用的VS版本为VS2012_RC_ULT_ENU,请指教

    • 已移动 ThankfulHeart 2012年6月11日 6:51 WPF问题 (发件人:.NET Framework 一般性问题讨论区)
    2012年6月11日 3:40

答案

全部回复

  • 我想你的IE肯定不是IE 6吧,所以, 根据文档的描述:http://msdn.microsoft.com/zh-cn/library/system.windows.controls.page.showsnavigationui.aspx

    你的Frame本身不是IE6的核心,则是无效的。

    这个属性另方面可以隐藏 NavigationWindow 的导航,所以你可以将你的主窗体改成 NavigationWindow 即可。

    <NavigationWindow x:Class="WpfApplication8.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="MainWindow" Height="350" Width="525" Source="Page1.xaml">
    </NavigationWindow>
    

    public partial class MainWindow : NavigationWindow
    {
      ...
    }


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年6月12日 3:24
    版主
  • 不是啊  我用的是WIN8 RP版,我的WPF程序的MainWindow.xaml中为

    <Window x:Class="test.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

    不是用NavigationWindow ,然后用Fram导航到相关页面,然后在该页面用this.NavigationService.Navigate(page);导航到另外一个页面

    2012年6月12日 7:10
  • 是的, 我的理解没错, 和你在一样的环境, 一样的代码.  我只是解释下为什么Frame的导航没有消失,这个和什么系统没有关系。 因为在Windows 7 VS2010x下也是一样的效果。 我是说用 NavigationWindow 后可以隐藏。不是用NavigationWindow 来测试的,我用的也是Frame测试的。

    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年6月12日 7:21
    版主
  • 那又没办法可以去除这个导航栏,或者能不能用其他的页面跳转方式而可以不需要这个导航喇嘛
    2012年6月12日 7:31
  • 你可以将你的Page改为UserControl, 然后在主窗体上通过 ContentPresenter 的Content来变化导航到你的新的UserControl上:

    代码参考:

        public class ContentNavigationService
        {
            private static ContentPresenter _cp;
            public static void RegisterContentPresenter(ContentPresenter cp)
            {
                _cp = cp;
            }
    
            public static void Navigate(UserControl uc)
            {
                _cp.Content = uc;
            }
        }
    
    

    MainWindow XAML:

    <ContentPresenter x:Name="cp"/>

    MainWindow C#:

            public MainWindow()
            {
                InitializeComponent();
                ContentNavigationService.RegisterContentPresenter(cp);
    
                UserControl1 uc = new UserControl1();
                ContentNavigationService.Navigate(uc);
            }


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年6月12日 8:19
    版主
  • 如果是是UserControl之间的导航呢,方法也是一样么,在Xmal中加<ContentPresenter x:Name="cp"/>,然后用Navigate?

    2012年6月12日 10:45
  • 上面的回复中包含了如何Navigate的代码

    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年6月12日 10:49
    版主
  • Fram有个属性可以直接设定  NavigationUIVisibility
    2012年6月13日 2:28