Panel.ZIndex не работает на двух разных сетках - PullRequest
1 голос
/ 29 июля 2010

Цель: когда мышь над кнопкой, высота кнопки должна стать двойной, и кнопка должна отображаться поверх других элементов управления.Элементы управления могут присутствовать в количестве панелей на экране.

Я использую VS 2010, у меня есть основная сетка с 2 рядами.Каждый ряд имеет 2 сетки.Каждая сетка имеет кнопки.Например, сетка 1 желтого цвета имеет цветные кнопки, сетка 2 желтого цвета - кнопки.Я написал следующий стиль для кнопок:

<Style TargetType="{x:Type Buttons}"> 
    <Style.Triggers> 
        <Trigger Property="IsMouseOver" Value="True"> 
            <Setter Property="RenderTransform">
                <Setter.Value>
                    <ScaleTransform ScaleX="1" ScaleY="2" />
                </Setter.Value>
            </Setter>
            <Setter Property="RenderTransformOrigin" Value="0.5,0.5"/> 
            <Setter Property="Panel.ZIndex" Value="99999"/> 
        </Trigger> 
    </Style.Triggers> 
</Style>

Проблема: Когда мышь находится над кнопкой желтого цвета в сетке 1. Но кнопка желтого цвета не выше кнопок синего цветаСетка 2. Panel.ZIndex не работает на двух разных сетках.

Пожалуйста, дайте мне знать, как решить эту проблему.

1 Ответ

2 голосов
/ 29 июля 2010

Похоже, проблема в том, что Сетка 1 отстает от Сетки 2. Если они оба являются дочерними элементами одной и той же основной сетки, то вы можете использовать тот же трюк, который вы используете для Button, и установить ZIndex Сетки на 99999, когда мышь над ним:

<Style TargetType="Grid">
    <Style.Triggers>
        <Trigger Property="IsMouseOver" Value="True">
            <Setter Property="Panel.ZIndex" Value="99999"/>
        </Trigger>
    </Style.Triggers>
</Style>
...