C# WPF如何将不同样式附加到最后一个子项
我有一个包含多个按钮的包装袋。 所有按钮都有相同的基本样式来定义其基本外观。 每个按钮的右侧都有一个可见的边框。但是我想使用样式删除最后一个按钮的边框 我认为这很简单。WPF对我来说是新的,所以我想了解它。 我在互联网上找到的解决方案适用于不同的情况。这些解决方案都与ListBox或ItemContainer有关,它们通过索引为一些列表项设置样式 我不想只在最后一个按钮上添加另一个样式键,因为这不是动态的,而且WrapPanel会根据应用程序的状态动态填充按钮 这是我的代码:C# WPF如何将不同样式附加到最后一个子项,c#,wpf,user-interface,data-binding,wpf-controls,C#,Wpf,User Interface,Data Binding,Wpf Controls,我有一个包含多个按钮的包装袋。 所有按钮都有相同的基本样式来定义其基本外观。 每个按钮的右侧都有一个可见的边框。但是我想使用样式删除最后一个按钮的边框 我认为这很简单。WPF对我来说是新的,所以我想了解它。 我在互联网上找到的解决方案适用于不同的情况。这些解决方案都与ListBox或ItemContainer有关,它们通过索引为一些列表项设置样式 我不想只在最后一个按钮上添加另一个样式键,因为这不是动态的,而且WrapPanel会根据应用程序的状态动态填充按钮 这是我的代码: <Windo
<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 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>
按钮1
按钮2
按钮3
…但我想使用样式删除最后一个按钮的边框
然后定义另一种样式并将其应用于最后一个按钮
,或者简单地设置(“覆盖”)最后一个按钮的边框厚度
属性:
<WrapPanel VerticalAlignment="Bottom" x:Name="topTabs">
<Button Style="{StaticResource tabButton}">Button 1</Button>
<Button Style="{StaticResource tabButton}">Button 2</Button>
<Button Style="{StaticResource tabButton}" BorderThickness="0">Button 3</Button>
</WrapPanel>
按钮1
按钮2
按钮3
本地值优先于样式设置的值:您能给我们看一下您的一些代码吗?我不确定我是否理解正确-您想在按钮上保留样式tabButton
,并用不同的内容覆盖它吗?不一定。这只是我的一次尝试。我想我应该创建一个样式选择器什么的?动态填充wrappanel的通常方法是使它成为某种itemscontrol的itemspresenter。然后将(绑定到itemssource的observablecollection的项)模板化为按钮。这就是为什么你找到的样本会这样做。想想看,其中一个很可能就是我写的一个样本。