我有一个包含多个按钮的WrapPanel。 所有按钮都具有相同的基本样式,以定义其基本外观。 每个按钮在右侧都有一个可见的边框。但我想使用样式删除最后一个按钮的边框。
我觉得它很简单。 WPF对我来说是新手,所以我想了解它。 我在互联网上找到的解决方案适用于不同的情况。这些解决方案都与ListBox或ItemContainer有关,可以按索引为某些列表项设置样式。
我不想只为最后一个Button添加另一个样式键,因为它不是动态的,WrapPanel是使用Buttons动态填充的,具体取决于应用程序的状态。
这是我的代码:
<Window.Resources>
<Style x:Key="lastTabStyle" TargetType="Button">
<Setter Property="BorderThickness" Value="0" />
</Style>
<Style x:Key="tabButton" TargetType="Button">
<Setter Property="Background" Value="#FF21588B" />
<Setter Property="BorderThickness" Value="0 0 1 0" />
<Setter Property="Foreground" Value="#fff" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border Background="{TemplateBinding Background}" Padding="20 10 20 10">
<ContentPresenter HorizontalAlignment="left" VerticalAlignment="Center" />
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="#FF266095" />
</Trigger>
</Style.Triggers>
</Style>
<Style x:Key="tabButtonSelected" TargetType="Button">
<Setter Property="Background" Value="#FF3474B0" />
<Setter Property="BorderThickness" Value="0" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border Background="{TemplateBinding Background}" Padding="10 8">
<ContentPresenter HorizontalAlignment="left" VerticalAlignment="Center" />
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
和WrapPanel:
<WrapPanel VerticalAlignment="Bottom" x:Name="topTabs">
<Button Style="{StaticResource tabButton}">Button 1</Button>
<Button Style="{StaticResource tabButton}">Button 2</Button>
<Button Style="{StaticResource tabButton}">Button 3</Button>
</WrapPanel>
答案 0 :(得分:0)
...但我想使用样式删除最后一个按钮的边框。
然后定义另一个样式并将其应用于上一个Button
或简单地设置(“覆盖”)最后BorderThickness
的{{1}}属性:
Button
本地值优先于样式设置的值:https://docs.microsoft.com/en-us/dotnet/framework/wpf/advanced/dependency-property-value-precedence