Cuando crea una barra de aplicaciones o una barra de comandos en una aplicación para UWP, siempre hay puntos suspensivos escondidos cerca del costado del control, así:
No lo quiero en mi aplicación, pero no he encontrado ningún método/propiedad dentro de AppBar que me ayude a deshacerme de él. Debería ser posible, porque muchas de las aplicaciones predeterminadas de Windows 10 no lo tienen. Por ejemplo, no hay puntos suspensivos en la barra de menú principal a continuación:
¿Es posible ocultar los puntos suspensivos usando AppBar , o tengo que usar SplitView o algún otro control para implementar esto?
Primero, intente no usar AppBar en sus nuevas aplicaciones para UWP.
El control CommandBar para aplicaciones universales de Windows se ha mejorado para proporcionar un superconjunto de funciones de AppBar y una mayor flexibilidad en la forma en que puede usarlo en su aplicación. Debe usar CommandBar para todas las nuevas aplicaciones universales de Windows en Windows 10.
Puedes leer más sobre esto aquí .
Tanto CommandBar como AppBar pueden tener estilos y plantillas completos. Esto le da la posibilidad de eliminar cualquier elemento de la interfaz de usuario que no desee mostrar.
Así es como lo haces -
Abra su página en Blend, haga clic con el botón derecho en CommandBar > Editar plantilla > Editar una copia . Luego, asegúrese de seleccionar Definir en la aplicación , ya que actualmente hay un error en Blend que no generará los estilos si elige Este documento .
Una vez que tenga todos los estilos, busque el control MoreButton y establezca su Visibility en Collapsed (o puede eliminarlo, pero ¿qué pasa si se da cuenta de que lo necesita más tarde?).
Entonces deberías tener una CommandBar sin los puntos suspensivos.
Actualización para 2017 La visibilidad del botón de puntos suspensivos ahora se puede encontrar en la propiedad OverflowButtonVisibility de una barra de CommandBar . Como arriba, configúrelo en Collapsed para ocultarlo.
Si desea ocultar este botón globalmente, es suficiente para agregar
<Style x:Key="EllipsisButton" TargetType="Button"> <Setter Property="Visibility" Value="Collapsed"/> </Style>al archivo de recursos global
Sé que esta pregunta ya no está activa, pero para completar, propongo mi respuesta.
En lugar de cambiar la visibilidad mediante el uso de estilos, he escrito una extensión de propiedad adjunta que puede ocultar/mostrar el botón Más a través del enlace de datos. De esta manera, puede mostrarlo/ocultarlo condicionalmente como lo desee.
El uso es tan simple como vincular su propiedad a la extensión:
<CommandBar extensions:CommandBarExtensions.HideMoreButton="{Binding MyBoolean}"> ... </CommandBar>El código de extensión es el siguiente:
public static class CommandBarExtensions { public static readonly DependencyProperty HideMoreButtonProperty = DependencyProperty.RegisterAttached("HideMoreButton", typeof(bool), typeof(CommandBarExtensions), new PropertyMetadata(false, OnHideMoreButtonChanged)); public static bool GetHideMoreButton(UIElement element) { if (element == null) throw new ArgumentNullException(nameof(element)); return (bool)element.GetValue(HideMoreButtonProperty); } public static void SetHideMoreButton(UIElement element, bool value) { if (element == null) throw new ArgumentNullException(nameof(element)); element.SetValue(HideMoreButtonProperty, value); } private static void OnHideMoreButtonChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { var commandBar = d as CommandBar; if (e == null || commandBar == null || e.NewValue == null) return; var morebutton = commandBar.FindDescendantByName("MoreButton"); if (morebutton != null) { var value = GetHideMoreButton(commandBar); morebutton.Visibility = value ? Visibility.Collapsed : Visibility.Visible; } else { commandBar.Loaded += CommandBarLoaded; } } private static void CommandBarLoaded(object o, object args) { var commandBar = o as CommandBar; var morebutton = commandBar?.FindDescendantByName("MoreButton"); if (morebutton == null) return; var value = GetHideMoreButton(commandBar); morebutton.Visibility = value ? Visibility.Collapsed : Visibility.Visible; commandBar.Loaded -= CommandBarLoaded; } } En el enlace inicial, utiliza el evento Loaded para aplicar la ocultación una vez que se ha cargado. FindDescendantByName es otro método de extensión que itera el árbol visual. Es posible que desee crear o tomar uno si su solución aún no lo contiene.