2013-04-15 3 views
10

У меня есть StackPanel (1), с другим StackPanel (2) внутри.WPF - Как изменить детский стиль при наведении указателя на родителя

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

enter image description here

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

Что было бы простой структурой стиля для этого?

ответ

18

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

Образец с цветами для ясности:

1) когда мы имеем MouseOver на 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) когда мы имеем MouseOver на 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> 
+0

Первый - это именно то, что мне нужно. Спасибо! – Yisela

+0

Смешная вещь: я использовал первый образец с ** Property = "Visibility" Value = "Collapsed" ** по умолчанию. но тогда я не вижу его на Designer :-). – itsho

Смежные вопросы