- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想将选定的选项卡背景设置为红色,而未选择的选项卡背景设置为绿色。但是,只有未选中的选项卡在更改时才会显示为绿色。选择保持白色。
<TabControl Background="LightGray" Name="MainTabControl">
<TabControl.Resources>
<Style TargetType="TabItem">
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="Red" />
</Trigger>
<Trigger Property="IsSelected" Value="False">
<Setter Property="Background" Value="Green" />
</Trigger>
</Style.Triggers>
</Style>
</TabControl.Resources>
<TabItem Header="Main" />
<TabItem Header="Optimizer" />
</TabControl>
最佳答案
覆盖 TabItem
的 ControlTemplate
并向其添加触发器
<Style TargetType="{x:Type TabItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TabItem}">
<Grid>
<Border Name="Border" >
<ContentPresenter VerticalAlignment="Center" Margin="5"
HorizontalAlignment="Center"
ContentSource="Header" >
</ContentPresenter>
</Border>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter TargetName="Border" Property="Background" Value="Red" />
</Trigger>
<Trigger Property="IsSelected" Value="False">
<Setter TargetName="Border" Property="Background" Value="Green" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
tabitem
样式并添加背景颜色,从 vs 设计师右键单击
tabitem
并选择 EditTemplate > Edit a Copy,然后更新
TabItem.Static.Background
Gardian画笔负责未选中的标签颜色,以及
TabItem.Selected.Background
负责选定选项卡颜色的画笔:
//..
<LinearGradientBrush x:Key="TabItem.Static.Background" EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#F0F0F0" Offset="0.0"/>
<GradientStop Color="Green" Offset="1.0"/>
</LinearGradientBrush>
<SolidColorBrush x:Key="TabItem.Static.Border" Color="#ACACAC"/>
<LinearGradientBrush x:Key="TabItem.MouseOver.Background" EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#ECF4FC" Offset="0.0"/>
<GradientStop Color="#DCECFC" Offset="1.0"/>
</LinearGradientBrush>
<SolidColorBrush x:Key="TabItem.MouseOver.Border" Color="#7EB4EA"/>
<SolidColorBrush x:Key="TabItem.Disabled.Background" Color="#F0F0F0"/>
<SolidColorBrush x:Key="TabItem.Disabled.Border" Color="#D9D9D9"/>
<SolidColorBrush x:Key="TabItem.Selected.Border" Color="#ACACAC"/>
<SolidColorBrush x:Key="TabItem.Selected.Background" Color="Red"/>
//..
templateBinding
在
mainBorder
和
innerBorder
到
Background
属性(最初只有
mainBorder
是
templateBinded
到
background
属性),然后将触发器添加到
controlTemplate
触发器,
<Grid x:Name="templateRoot" SnapsToDevicePixels="true">
<Border x:Name="mainBorder" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="1,1,1,0" Background="{TemplateBinding Background}" Margin="0">
<Border x:Name="innerBorder" BorderBrush="{StaticResource TabItem.Selected.Border}" BorderThickness="1,1,1,0" Background="{TemplateBinding Background}" Margin="-1" Opacity="0"/>
</Border>
<ContentPresenter x:Name="contentPresenter" ContentSource="Header" Focusable="False" HorizontalAlignment="{Binding HorizontalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{Binding VerticalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}"/>
</Grid>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="Red" />
</Trigger>
<Trigger Property="IsSelected" Value="False">
<Setter Property="Background" Value="Green" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
关于wpf - TabItem.IsSelected 的触发器不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35108366/
这个问题在这里已经有了答案: UICollectionView - didDeselectItemAtIndexPath not called if cell is selected (8 个回答)
我想将选定的选项卡背景设置为红色,而未选择的选项卡背景设置为绿色。但是,只有未选中的选项卡在更改时才会显示为绿色。选择保持白色。
我正在尝试更改 TreeView 中的 SelectedItem 模板。我按照描述在 Style.Triggers 中编写了简单的容器样式和更改项目模板 [1]: How do I highlight
我有一个包含各种项目的 TreeView。项目的样式使得 IsSelected 属性绑定(bind)到我的 VM 到 bool IsSelected。 每当我单击 TreeView 项时,都会调用此
我意识到这可能是菜鸟问题的定义,但我很困惑,非常感谢任何帮助。 我有一个 actionlistener 和 JRadioButton,它们是在 ValublesMain 类中声明的,如下所示。 JRa
我正在尝试用 Selenium 测试一组单选按钮。我已将它们分组在一个列表中 @FindBy(xpath = "//ux-button-group//input[@name='options']")
我使用 isSelected 作为复选框。调试显示该方法无论是否选中都返回false,没关系。 来自 xml 的部分: 和代码: @Override protected void onCr
好吧,我想做的是在选择 JRadioButton 时更改它们的文本,我让它们更改颜色。我知道我可以通过将代码放入特定于每个按钮的专用事件处理方法中来更改文本来做到这一点,但是我该如何做到这一点,以便我
我还是没明白。能否请您准确地告诉我如何覆盖 ListBox 的默认行为。 每次选择 ListBoxItem 时,都应更改边框的背景。不是整行的背景,而是指定的边框的背景。
我有一组绑定(bind)到 ListBox 的 ViewModel。我正在尝试将每个的 IsSelected 属性绑定(bind)在一起。在 WPF 中,它通过设置样式来工作: 这在 S
我目前正在设计我的应用程序 (WPF),我正在尝试更改 DatagridRow 的 IsSelected 的设计。 XAML:
我制作了一个自定义渐变按钮,这样我就可以更改不同状态下的渐变颜色: class GradientButton: UIButton { public var buttongradient: CAGrad
我目前正在重构我制作的一个线程安全的应用程序。 我有一个需要检查的 JCheckBox。此 JCheckBox 在整个程序中的各种不同线程中被引用。 我可以简单地调用 checkbox.isSelec
我有一个单选组,定义了两个黑色和彩色按钮。当我尝试根据选择进行计算时,什么也没有发生。知道为什么我的单选按钮不起作用吗?谢谢 public void onClick(V
您好,我正在尝试显示 JTAppleCalendar 选择的当前日期,但我希望它不要触发 isSelected,因为我想在用户实际选择日期时显示时间选择器,而不是在加载日历时触发与当前日期 选中单元格
我有一个函数,其目的是更改单选按钮的状态,它看起来像这样: public void changeRadioState(List radioButtons){ for(WebEle
下面的代码用于在选择 3 个按钮中的任何一个时更改背景颜色:红色、绿色或蓝色。当我选择其中任何一个时,实际上什么也没有发生。但是,从 JButtons 更改为 JRadioButtons 或 JTog
我在 C#/WPF 中有一个相当大的应用程序,它是用 MVVM 制作的(有点)。 在 ListView 中,我使用 IsSelected 绑定(bind)到所选项目。这些 IsSelected 属性位
我在 JTable 中有一个 JComboBox,正在查看解释参数的 getTableCellRendererComponent 文档。 table - the JTable that is aski
我正在创建一个带有 3 个按钮、3 个复选框和 3 个单选按钮的 JFrame。我遇到按下 3 个按钮中的 1 个按钮时执行的功能的问题。这是函数: private void setCenterCol
我是一名优秀的程序员,十分优秀!