选择时的 C# 选项卡背景
C# tab background when selected
我想在我的 WPF 应用程序中更改我的选项卡的背景图像,这是我目前这样做的代码:
<Window.Resources>
<ResourceDictionary>
<Style TargetType="{x:Type TabItem}">
<Setter Property="BorderThickness" Value="0" />
<Setter Property="VerticalContentAlignment" Value="Center" />
<Setter Property="HorizontalContentAlignment" Value="Center" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TabItem}">
<Border>
<Grid>
<Grid>
<Border x:Name="border" CornerRadius="0,0,0,0" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="0,0,0,0" />
</Grid>
<Border BorderThickness="{TemplateBinding BorderThickness}" Padding="{TemplateBinding Padding}">
<ContentPresenter ContentSource="Header" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
</Border>
</Grid>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background">
<Setter.Value>
<ImageBrush ImageSource="arrowOR.png" />
</Setter.Value>
</Setter>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
</Window.Resources>
标签本身的背景我已经设置了 ImageBrush ImageSource="arrowBU.png"。现在由于某种原因,无论标签是否被选中,背景总是 arrowBU.png.
编辑:我还需要在悬停选项卡时设置此 arrowOR.png,对于悬停时光标是手而不是箭头也是如此。
我还将我的选项卡设置为禁用,我希望我的用户使用按钮遵循标准流程。
有人可以帮忙吗?
问题是 Background
的局部属性值(带 arrowBU.png
的图像刷)优先。摆脱它并在问题中包含的 TabItem
默认样式中设置 TabItem
的默认背景:
<Style TargetType="{x:Type TabItem}">
<Setter Property="BorderThickness" Value="0" />
<Setter Property="VerticalContentAlignment" Value="Center" />
<Setter Property="HorizontalContentAlignment" Value="Center" />
<Setter Property="Background">
<Setter.Value>
<ImageBrush ImageSource="arrowBU.png" />
</Setter.Value>
</Setter>
<Setter Property="Template">
<!-- blah blah blah -->
如果您只想在某些 选项卡项上设置背景,请为基于 上面的项定义特殊样式风格。 将背景图像画笔移动setter到新的派生样式中。然后在要使用它的选项卡项上显式设置此样式。
<Style TargetType="TabItem" x:Key="BUBkgTabItem" BasedOn="{StaticResource {x:Type TabItem}}">
<Setter Property="Background">
<Setter.Value>
<ImageBrush ImageSource="arrowBU.png" />
</Setter.Value>
</Setter>
</Style>
你会像这样使用它:
<TabControl>
<!-- Without BU background -->
<TabItem Header="Blah">
<!-- stuff -->
</TabItem>
<!-- With BU background -->
<TabItem Header="Planxty" Style="{StaticResource BUBkgTabItem}">
<!-- stuff -->
</TabItem>
我想在我的 WPF 应用程序中更改我的选项卡的背景图像,这是我目前这样做的代码:
<Window.Resources>
<ResourceDictionary>
<Style TargetType="{x:Type TabItem}">
<Setter Property="BorderThickness" Value="0" />
<Setter Property="VerticalContentAlignment" Value="Center" />
<Setter Property="HorizontalContentAlignment" Value="Center" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TabItem}">
<Border>
<Grid>
<Grid>
<Border x:Name="border" CornerRadius="0,0,0,0" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="0,0,0,0" />
</Grid>
<Border BorderThickness="{TemplateBinding BorderThickness}" Padding="{TemplateBinding Padding}">
<ContentPresenter ContentSource="Header" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
</Border>
</Grid>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background">
<Setter.Value>
<ImageBrush ImageSource="arrowOR.png" />
</Setter.Value>
</Setter>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
</Window.Resources>
标签本身的背景我已经设置了 ImageBrush ImageSource="arrowBU.png"。现在由于某种原因,无论标签是否被选中,背景总是 arrowBU.png.
编辑:我还需要在悬停选项卡时设置此 arrowOR.png,对于悬停时光标是手而不是箭头也是如此。 我还将我的选项卡设置为禁用,我希望我的用户使用按钮遵循标准流程。
有人可以帮忙吗?
问题是 Background
的局部属性值(带 arrowBU.png
的图像刷)优先。摆脱它并在问题中包含的 TabItem
默认样式中设置 TabItem
的默认背景:
<Style TargetType="{x:Type TabItem}">
<Setter Property="BorderThickness" Value="0" />
<Setter Property="VerticalContentAlignment" Value="Center" />
<Setter Property="HorizontalContentAlignment" Value="Center" />
<Setter Property="Background">
<Setter.Value>
<ImageBrush ImageSource="arrowBU.png" />
</Setter.Value>
</Setter>
<Setter Property="Template">
<!-- blah blah blah -->
如果您只想在某些 选项卡项上设置背景,请为基于 上面的项定义特殊样式风格。 将背景图像画笔移动setter到新的派生样式中。然后在要使用它的选项卡项上显式设置此样式。
<Style TargetType="TabItem" x:Key="BUBkgTabItem" BasedOn="{StaticResource {x:Type TabItem}}">
<Setter Property="Background">
<Setter.Value>
<ImageBrush ImageSource="arrowBU.png" />
</Setter.Value>
</Setter>
</Style>
你会像这样使用它:
<TabControl>
<!-- Without BU background -->
<TabItem Header="Blah">
<!-- stuff -->
</TabItem>
<!-- With BU background -->
<TabItem Header="Planxty" Style="{StaticResource BUBkgTabItem}">
<!-- stuff -->
</TabItem>