Quiero ocultar la barra de navegación en una página creada con WPF. He intentado ShowsNavigationUI = false
, pero aún muestra el control.Cómo ocultar la barra de navegación en una página de WPF
Respuesta
El ajuste ShowsNavigationUI = false en un objeto de página debe hacerlo. No parece ser un error, sin embargo, que va a causar que falle en al menos una secuencia de eventos:
- página ya está en NavigationWindow cuando este se establece
- página se navega de distancia y viceversa
Puede haber otros escenarios que aún no he encontrado que lo hagan fallar.
Para que esto funcione de manera totalmente confiable, lo que hago es ignorar por completo la propiedad Page.ShowsNavigationUI y configurarla en su lugar en NavigationWindow. Esto parece ser completamente confiable.
Aquí es cómo esto se puede hacer en su constructor Página:
Dispatcher.BeginInvoke(ApplicationPriority.Render, new Action(() =>
{
var navWindow = Window.GetWindow(this) as NavigationWindow;
if(navWindow!=null) navWindow.ShowsNavigationUI = false;
}));
Si hace esto, recuerde que no debe establecer ShowsNavigationUI en cualquier objeto de página.
FYI, también puede cambiar el estilo de su NavigationWindow como desee cambiando su ControlTemplate. Por ejemplo, esto elimina todo, pero el contenido de la página:
<Style TargetType="{x:Type NavigationWindow}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type NavigationWindow}">
<AdornerDecorator>
<ContentPresenter Name="PART_NavWinCP"
ClipToBounds="true"/>
</AdornerDecorator>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Por encima sólo funciona para las ventanas de navegación, pero yo estoy usando ventanas ordinarias WPF. Algunos dicen que son mejores que las ventanas de navegación. Estoy usando DockPanel para alojar mis páginas. Mi solución crea una nueva plantilla para DockPanel y simplemente no agrega botones o los oculta (vea StackPanel Visibility = "Hidden"). Funciona bien
<DockPanel>
<Frame x:Name="_mainFrame">
<Frame.Template>
<ControlTemplate TargetType="Frame">
<DockPanel Margin="7">
<StackPanel Visibility="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>
¿Esto le permite cargar y cerrar páginas dinámicamente mientras mantiene abierta su página principal? –
Este me pareció muy fácil. En su MainWindow, hacer esto:
public MainWindow()
public partial class MainWindow : NavigationWindow
{
public MainWindow()
{
InitializeComponent();
ShowsNavigationUI = false;
}
}
}
Y si tienes un evento en el botón haga clic para abrir una nueva página, simplemente hacer esto:
private void btnEndUserSearch_Click(object sender, RoutedEventArgs e)
{
EndUser EndUserSearchPage = new EndUser();
this.NavigationService.Navigate(EndUserSearchPage);
EndUserSearchPage.ShowsNavigationUI = false;
}
+1 para mayor claridad. – jogojapan
Si estás utilizando un marcose puede cambiar el estilo predeterminado del Marco para eliminar los botones de navegación (que se muestran a continuación). El mismo enfoque podría hacerse para NavigationWindow. Intenté originalmente configurar Page.ShowsNavigationUI y no tuvo ningún efecto. Simplemente agregue el estilo de abajo a ResourceDictionary y funciona bien.
<Style TargetType="{x:Type Frame}">
<Setter Property="Control.Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Frame}">
<Border BorderThickness="{TemplateBinding Border.BorderThickness}" Padding="{TemplateBinding Control.Padding}" BorderBrush="{TemplateBinding Border.BorderBrush}" Background="{TemplateBinding Panel.Background}">
<ContentPresenter Content="{TemplateBinding ContentControl.Content}" ContentTemplate="{TemplateBinding ContentControl.ContentTemplate}" ContentStringFormat="{TemplateBinding ContentControl.ContentStringFormat}" Name="PART_FrameCP" />
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
simplemente dice que en su página de contenedores, que desea barra de navegación o no, usando propiedad NavigationUIVisibility.
<Frame Margin="173,41,1,28" Name="frmPageContainer" NavigationUIVisibility="Hidden" Panel.ZIndex="1" >
he tenido este problema dinámicamente cada vez que cambia la propiedad contenido de un marco, y lo resolvió mediante el código siguiente en mi clic (evento).
ContentFrame.NavigationUIVisibility = NavigationUIVisibility.Hidden;
Donde ContentFrame es el nombre del marco, como se define en XAML. es decir
<Frame x:Name="ContentFrame" />
Es muy fácil de implementar.
aquí:
<Frame x:Name="_FrameName" NavigationUIVisibility="Hidden" />
:-p
- 1. Ocultar barra de navegación en la rotación
- 2. Barra de navegación mostrar/ocultar
- 3. Ocultar controlador de navegación de barra inferior
- 4. Cómo ocultar el elemento uibarbutton de una barra de navegación
- 5. Cómo ocultar completamente la barra de navegación en iPhone/HTML5
- 6. Ocultar barra de herramientas en WPF FlowDocument
- 7. Ocultar la barra de navegación en el guión gráfico
- 8. Ocultar el título de la barra de navegación sin quitarlo
- 9. cómo ocultar la barra de navegación cuando presiono desde el controlador de navegación?
- 10. Storyboard - Ocultar la barra superior del controlador de navegación programáticamente
- 11. iPhone - Ocultar barra de direcciones en la página Cargar
- 12. Cómo agregar el botón de barra en la barra de navegación sin controlador de navegación.
- 13. ¿Cómo ocultar la barra de direcciones de una página web en android?
- 14. ¿Cómo ocultar/deshabilitar solo la primera barra de uinavigation?
- 15. Ocultar la barra de desplazamiento en WebView
- 16. UISearchBar en la barra de navegación
- 17. iPhone: ocultar/mostrar la barra de herramientas
- 18. WPF Ribbon - Ocultar barra de herramientas de acceso rápido
- 19. Ocultar/Mostrar Barra de navegación y barra de herramientas al tocar
- 20. ¿Cómo ocultar la barra de direcciones en iPhone?
- 21. ¿Ver cambios de marco en Ocultar/Mostrar la barra de navegación?
- 22. Bootstrap: llene todo el contenedor debajo de la barra de navegación menos la altura de la barra de navegación
- 23. Ocultar barra de notificaciones
- 24. Symfony2 - llene la barra de navegación en layout.html.twig en cada solicitud de página
- 25. iPhone: botón "atrás" de la barra de navegación clicable = ¿NO?
- 26. Agregar imagen a la barra de navegación
- 27. "Ocultar" la barra de pestañas al presionar una vista
- 28. cómo ocultar la barra de estado en la aplicación Iphone
- 29. IPHONE: ABPeoplePickerNavigationController barra de navegación oculta
- 30. ¿Cómo establecer el elemento activo en la barra de navegación desplegable de la barra de acciones?
no puedo encontrar ApplicationPriority. ¿En qué clase está? Tengo el mismo problema, pero para mí es aleatorio. – Paparazzi
Cambie 'ApplicationPriority.Render' por 'DispatcherPriority.Loaded' –