Как не дать детям вызвать событие мыши? - PullRequest
0 голосов
/ 28 марта 2020

У меня есть 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.

1 Ответ

0 голосов
/ 28 марта 2020

Изменил эту строку из стиля:

<Condition Binding="{Binding IsMouseOver, ElementName=templateRoot}" Value="true"/>

Похоже, что RelativeSource={RelativeSource Self}} нацелится на всех детей и родителей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...