Подтвердить что ты не робот

WPF - Как изменить стиль детей при наведении указателя мыши на родителя

У меня есть StackPanel (1), с другим StackPanel (2) внутри.

SP 2 должен быть скрыт (непрозрачность: 0), пока не будет виден SP 1. Перемещение мыши должно изменить стиль SP2 на непрозрачность: 100.

enter image description here

Я пробовал определять стили в ресурсах StackPanel и использовать триггеры там, чтобы затем настроить таргетинг на внутреннюю панель, но я не уверен, как мне настроить таргетинг на детей из триггера.

Какова была бы простая структура стиля для этого?

4b9b3361

Ответ 1

Я не совсем понимаю, что вам нужно, поэтому я разместил 2 образца.

Пример с цветами для ясности:

1), когда мы наводим указатель мыши на sp1 sp2, получив зеленый цвет

<Window x:Class="Prognoz.GP.DataCollection.TestMarkupProject.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" >
<Window.Resources>
    <Style x:Key="test" TargetType="StackPanel">
        <Setter Property="Background" Value="Red" />
        <Style.Triggers>
            <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType=StackPanel,AncestorLevel=1}, Path=IsMouseOver}" Value="True" >
                <Setter Property="Background" Value="Green" />
            </DataTrigger>
        </Style.Triggers>
    </Style>
</Window.Resources>
<Grid>
    <StackPanel Width="400" Height="400" Background="Yellow">

        <StackPanel Width="350" Height="350" Style="{StaticResource test}"/>
    </StackPanel>
</Grid>
</Window>

2), когда мы наводим указатель на sp2 sp2, получив зеленый цвет

<Style x:Key="test" TargetType="StackPanel">
        <Setter Property="Background" Value="Red" />
        <Style.Triggers>
            <Trigger Property="StackPanel.IsMouseOver" Value="True" >
                <Setter Property="Background" Value="Green" />
            </Trigger>
        </Style.Triggers>
</Style>