Comment masquer la barre de navigation dans une page WPF
Je veux cacher la barre de navigation dans une page créée à l'aide de WPF. J'ai essayé ShowsNavigationUI = false, mais il est encore l'affichage de la commande.
Réglage ShowsNavigationUI=false sur la Page de l'objet devrait le faire. Il ne semble pas être un bug, cependant, qui sera la cause de cet échec à au moins une séquence d'événements:
Page est déjà en NavigationWindow lorsque cette option est définie
Page est accédée à l'écart et à l'arrière à nouveau
Il y a peut être d'autres scénarios que je n'ai pas rencontré encore que pour le faire échouer.
Pour obtenir que cela fonctionne totalement fiable, ce que je fais, c'est ignorer la Page.ShowsNavigationUI propriété entièrement et le place sur NavigationWindow. Cela semble être totalement fiable.
Ici est de savoir comment cela peut être fait dans le constructeur de Page:
Dispatcher.BeginInvoke(ApplicationPriority.Render, new Action(() =>
{
var navWindow = Window.GetWindow(this) as NavigationWindow;
if(navWindow!=null) navWindow.ShowsNavigationUI = false;
}));
Si vous faites cela, n'oubliez pas de définir ShowsNavigationUI sur n'importe quelle Page de l'objet.
Pour info, vous pouvez aussi relooker votre NavigationWindow de la manière que vous souhaitez en changeant sa ControlTemplate. Par exemple, cela enlève tout, mais le contenu de la page:
Si vous utilisez un Cadre vous pouvez changer l'Image par défaut du style à supprimer les boutons de navigation (voir ci-dessous). La même approche pourrait être fait pour NavigationWindow. J'ai d'abord essayé la mise en Page.ShowsNavigationUI et il n'a eu aucun effet. Il suffit d'ajouter le style ci-dessous pour un ResourceDictionary et il fonctionne très bien.
Ci-dessus ne fonctionne que pour la Navigation de windows, mais je suis à l'aide d'ordinaire WPF, windows. Certains disent que ce sont de mieux que des fenêtres de Navigation. Je suis à l'aide de DockPanel de mes pages. Ma solution crée un nouveau modèle pour la DockPanel et tout simplement ne pas ajouter des boutons ou les rend caché (voir StackPanel Visibilité="Hidden"). Il fonctionne très bien.
<DockPanel><Framex:Name="_mainFrame"><Frame.Template><ControlTemplateTargetType="Frame"><DockPanelMargin="7"><StackPanelVisibility="Hidden"Margin="0"Orientation="Horizontal"DockPanel.Dock="Top"><!--<Button
Content="Avast! Go back!"
Command="{x:Static NavigationCommands.BrowseBack}"
IsEnabled="{TemplateBinding CanGoBack}"
/>
<Button
Content="Forward you dogs!"
Command="{x:Static NavigationCommands.BrowseForward}"
IsEnabled="{TemplateBinding CanGoForward}"
/>--></StackPanel><Border><ContentPresenter/></Border></DockPanel></ControlTemplate></Frame.Template></Frame></DockPanel>
est-ce à vous permettre de charger dynamiquement et de fermer les pages, tout en gardant votre page principale ouvrir?
J'ai eu ce problème à chaque fois que j'ai changé dynamiquement le Contenu de la propriété d'un Cadre, et résolu en utilisant le code suivant dans mon événement click ().
Réglage ShowsNavigationUI=false sur la Page de l'objet devrait le faire. Il ne semble pas être un bug, cependant, qui sera la cause de cet échec à au moins une séquence d'événements:
Il y a peut être d'autres scénarios que je n'ai pas rencontré encore que pour le faire échouer.
Pour obtenir que cela fonctionne totalement fiable, ce que je fais, c'est ignorer la Page.ShowsNavigationUI propriété entièrement et le place sur NavigationWindow. Cela semble être totalement fiable.
Ici est de savoir comment cela peut être fait dans le constructeur de Page:
Si vous faites cela, n'oubliez pas de définir ShowsNavigationUI sur n'importe quelle Page de l'objet.
Pour info, vous pouvez aussi relooker votre NavigationWindow de la manière que vous souhaitez en changeant sa ControlTemplate. Par exemple, cela enlève tout, mais le contenu de la page:
NavigationUIVisibility="Hidden"
sur l'élément d'imageviens de dire dans Votre page Conteneur , vous voulez barre de navigation, ou pas, à l'aide de
NavigationUIVisibility propriété.
Il est très facile de mise en œuvre.
Si vous utilisez un Cadre vous pouvez changer l'Image par défaut du style à supprimer les boutons de navigation (voir ci-dessous). La même approche pourrait être fait pour NavigationWindow. J'ai d'abord essayé la mise en Page.ShowsNavigationUI et il n'a eu aucun effet. Il suffit d'ajouter le style ci-dessous pour un ResourceDictionary et il fonctionne très bien.
Ce que j'ai trouvé vraiment facile. Dans votre MainWindow, faites ceci:
Et si vous avez une activité sur le bouton cliquez sur pour ouvrir une nouvelle page, il suffit de faire ceci:
Ci-dessus ne fonctionne que pour la Navigation de windows, mais je suis à l'aide d'ordinaire WPF, windows. Certains disent que ce sont de mieux que des fenêtres de Navigation. Je suis à l'aide de DockPanel de mes pages. Ma solution crée un nouveau modèle pour la DockPanel et tout simplement ne pas ajouter des boutons ou les rend caché (voir StackPanel Visibilité="Hidden"). Il fonctionne très bien.
J'ai eu ce problème à chaque fois que j'ai changé dynamiquement le Contenu de la propriété d'un Cadre, et résolu en utilisant le code suivant dans mon événement click ().
Où ContentFrame est le nom de l'image, comme définis dans le code XAML. c'est à dire
Sur le NavigationWindow lui-même-je utiliser ShowsNavigationUI="False"