Прозрачный фон кнопки в WPF с использованием стиля
Я нашел эту тему о настройке границы кнопки на прозрачный. Это прекрасно работает, но я хочу использовать это для фона кнопки, а не границы.
решение в ссылке, которую я вставил <Window.Resources>...</Window.Resources>
:
<Style TargetType="{x:Type Button}">
<Setter Property="Background" Value="Green"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Border Background="{TemplateBinding Background}">
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="Red"/>
</Trigger>
</Style.Triggers>
</Style>
источник: как изменить фон для кнопки мыши в WPF?
Как отредактировать этот код, чтобы я мог использовать его, чтобы установить фон моей кнопки прозрачным, а не его границу?
4 ответов
попробуйте этот фрагмент для прозрачной кнопки:
<Button Style="{StaticResource {x:Static ToolBar.ButtonStyleKey}}" BorderThickness="0">
<-- PUT BUTTON CONTENT HERE e.g. a Image -->
</Button>
измените эту строку
<Setter Property="Background" Value="Red"/>
to
<Setter Property="Background" Value="Transparent"/>
найдено решение для моей проблемы:
по-видимому, вам нужно добавить триггеры в ControlTemplate под ControlTemplate.Спусковой крючок. Andd после того, как вы сделали это, вещь с границами заключается в том, что вы должны установить имя цели в теге границы, а затем установить ссылку (-> TargetName="XXXXX") на свойства, которые вы назвали в теге границы.
Так:
<Window.Resources>
<Style x:Key="MenuButton" TargetType="Button">
<Setter Property="Background" Value="Transparent"/>
<Setter Property="Height" Value="40" />
<Setter Property="Width" Value="Auto" />
<Setter Property="Foreground" Value="White" />
<Setter Property="Margin" Value="45,0,0,0" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Grid>
<Border Name="MenuBorder" SnapsToDevicePixels="True" BorderBrush="Black" Background="{TemplateBinding Background}" BorderThickness="0,0,0,2" >
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="Button.IsFocused" Value="True">
<Setter Property="Background" Value="Transparent"/>
<Setter TargetName="MenuBorder" Property="BorderBrush" Value="#FFED6A2B" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
используйте это в коде C#
Button btn = new Button() {BorderBrush=System.Windows.Media.Brushes.Transparent,
BorderThickness = new Thickness(0)};
или
yourBtn.BorderBrush=System.Windows.Media.Brushes.Transparent;
yourBtn.BorderThickness =new Thickness(0);