wpf button flat

botón plano wpf



button flat (5)

¿Cómo hacer un botón de estilo plano en wpf? He intentado la propiedad BasedOn pero no funciona.


Para agregar a la respuesta de Eduardo, esta solución elimina cualquier estilo adicional como el borde alrededor del botón si el grosor se establece en 0.

Puede agregar estilo adicional según sea necesario:

<Style x:Key="Flat" TargetType="Button"> <Setter Property="Background" Value="{x:Null}" /> <Setter Property="BorderBrush" Value="{x:Null}" /> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type Button}"> <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Padding="{TemplateBinding Padding}"> <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/> </Border> <ControlTemplate.Triggers> <Trigger Property="IsKeyboardFocused" Value="true"> </Trigger> <Trigger Property="IsDefaulted" Value="true"> </Trigger> <Trigger Property="IsPressed" Value="true"> </Trigger> <Trigger Property="ToggleButton.IsChecked" Value="true"> </Trigger> <Trigger Property="IsEnabled" Value="false"> <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </Setter.Value> </Setter> <Style.Triggers> <Trigger Property="IsMouseOver" Value="True"> <Setter Property="Background" Value="{x:Null}" /> <Setter Property="BorderBrush" Value="{x:Null}" /> <Setter Property="FontWeight" Value="Normal" /> </Trigger> <Trigger Property="IsFocused" Value="True"> <Setter Property="FontWeight" Value="Normal" /> </Trigger> </Style.Triggers> </Style>


Sólo para empezar:

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <Page.Resources> <Style x:Key="Flat"> <Setter Property="Control.Background" Value="{x:Null}" /> <Setter Property="Control.BorderBrush" Value="{x:Null}" /> <Style.Triggers> <Trigger Property="Control.IsMouseOver" Value="True"> <Setter Property="Control.Background" Value="{x:Null}" /> <Setter Property="Control.BorderBrush" Value="{x:Null}" /> <Setter Property="Control.FontWeight" Value="Bold" /> </Trigger> <Trigger Property="Control.IsFocused" Value="True"> <Setter Property="Control.FontWeight" Value="Bold" /> </Trigger> </Style.Triggers> </Style> </Page.Resources> <StackPanel> <Button Style="{StaticResource Flat}">Hello</Button> </StackPanel> </Page>

Entonces tiene un millón de maneras de hacerlo, incluso cambiando la ControlTemplate para completar la redefinición del botón


Si solo necesita hacer el botón "invisible" pero resaltable:

bb.Background = new SolidColorBrush (Colors.White); bb.BorderBrush = new SolidColorBrush (Colors.White);


Solución más simple aquí usando el estilo de botón de la barra de herramientas ya definido:

<Button Style="{StaticResource {x:Static ToolBar.ButtonStyleKey}}" Content="You know I''m flat..." />


Solución rápida: incrustar el botón en una <ToolBar/>

Descargo de responsabilidad: agregará un cromo de la barra de herramientas, puede ser un problema en algunos casos. (Gracias Indeera)