У меня есть 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
, он делает то же самое.
Посмотрел в Интернете тоже и не смог ничего найти на топи c.
В идеале это было бы лучше всего иметь полностью решение XAML.