我有一个TabItem
,有Grid
和CheckBox
个孩子。
<TabControl>
<TabItem Header="First" Style="{DynamicResource CustomTabItemStyle}">
<Grid>
<CheckBox Content="Check Me"/>
<CheckBox Content="Check Me 2"/>
</Grid>
</TabItem>
</TabControl>
我正在设置TabItem
的样式并设置IsMouseOver
触发器以更改TabItem
的背景颜色,如下所示:
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding IsMouseOver, RelativeSource={RelativeSource Self}}" Value="true"/>
<Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}" Value="Top"/>
</MultiDataTrigger.Conditions>
<Setter Property="Background" TargetName="mainBorder" Value="{StaticResource TabItem.MouseOver.Background}"/>
<Setter Property="Opacity" TargetName="mainBorder" Value="0.1"/>
<Setter Property="BorderBrush" TargetName="mainBorder" Value="{StaticResource TabItem.MouseOver.Border}"/>
<Setter Property="BorderThickness" TargetName="innerBorder" Value="0"/>
<Setter Property="BorderThickness" TargetName="mainBorder" Value="0"/>
</MultiDataTrigger>
问题在于,当鼠标悬停在复选框上方时,背景色更改会触发。 TabItem
我尝试将Tag="TabItemParent"
设置为TabItem
,但是没有用。我同时尝试了许多其他条件,例如IsMouseDirectlyOver
,但是只有当鼠标悬停在实际的TabItem
上而不是其任何子元素上时,我才能使它工作。还尝试过使用C#MouseEnter
和MouseLeave
,它执行相同的操作。
也在线查看,找不到关于该主题的任何内容。
理想情况下,最好是具有完整的XAML解决方案。
答案 0 :(得分:0)
从样式更改了此行:
<Condition Binding="{Binding IsMouseOver, ElementName=templateRoot}" Value="true"/>
RelativeSource={RelativeSource Self}}
似乎将所有孩子和父母作为目标。