我有一个WPF TabControl的有四个的TabItems和应用自定义样式到两个的TabControl和的TabItems如下:TabItem的标题不响应鼠标,只在文字
<Style TargetType="TabControl" x:Key="TabControlStyle">
<Setter Property="Background" Value="Transparent" />
<Setter Property="BorderThickness" Value="0" />
<Setter Property="TabStripPlacement" Value="Left" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="TabControl">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<!-- The container for tab item headers -->
<TabPanel
Grid.Column="0"
Panel.ZIndex="1"
Margin="0,0,4,-1"
IsItemsHost="True"
Background="Transparent" />
<!-- Shadow to the left of the tab pages -->
<Border Grid.Column="0" Width="5" HorizontalAlignment="Right">
<Border.Background>
<LinearGradientBrush StartPoint="0,0" EndPoint="1,0">
<GradientStop Offset="0" Color="Transparent" />
<GradientStop Offset="1" Color="{StaticResource ShadowGray}" />
</LinearGradientBrush>
</Border.Background>
</Border>
<!-- Tab page -->
<Border Grid.Column="1"
Background="White"
SnapsToDevicePixels="true"
BorderThickness="1"
BorderBrush="{StaticResource HeaderBlueBrush}">
<ContentPresenter ContentSource="SelectedContent" />
</Border>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style TargetType="{x:Type TabItem}" x:Key="TabItemStyle">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TabItem}">
<!-- Tab item header -->
<Border Name="border"
SnapsToDevicePixels="True"
BorderThickness="0"
Padding="5,8,40,8"
Margin="0,0,-4,0">
<TextBlock Name="buttonText"
Margin="0"
FontSize="14"
Foreground="{StaticResource FontDarkGrayBrush}"
Text="{TemplateBinding Header}"
VerticalAlignment="Center" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Trigger.Setters>
<Setter TargetName="border" Property="Background" Value="{StaticResource HoverBlueBrush}" />
</Trigger.Setters>
</Trigger>
<Trigger Property="IsSelected" Value="True">
<Trigger.Setters>
<Setter TargetName="border" Property="Background" Value="{StaticResource SelectionBlueBrush}" />
<Setter TargetName="buttonText" Property="Foreground" Value="White"/>
</Trigger.Setters>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
正如你所看到的,标签项目标题包含一个边框(当鼠标悬停在它上面或当它被选中时获得不同的颜色),并且在该边框中有一个显示标题标题的TextBlock。我猜想很简单。
问题是标题对鼠标输入没有正确反应。基本上说:我必须在他们做出反应之前将鼠标悬停/点击实际文本(我猜测出的TextBlock)。如果我点击文字的右侧,则什么都不会发生。悬停也一样。但是,当我已经将鼠标悬停在一个标题的文本上(因此它获得了“悬停颜色”),然后将鼠标移动到文本的右侧(它通常不会反应),那么悬停的颜色仍然存在在我离开边境之前不要离开。
这里有一个形象作出澄清:
是什么原因造成这种现象?我认为这是不正常的,这是非常恼人的,因为TabControl没有反应人们期望的方式。
我试着'扭转'边界/ TextBlock组合的边距/填充(通过给TextBlock一个边距来制作空间,而不是给边框任何填充),但是这并没有改变任何东西。
帮助?
你不会碰巧有这样的版本分享吗?这是一个令人惊叹的造型,我想将其纳入我的应用程序:),当然还有许可。 – Andy