2011-06-01 209 views
0

我有幾個標籤和圖像在它rectange,我有這樣,當用戶在矩形懸停他們的鼠標背景變爲梯度:將鼠標懸停在標籤改變矩形背景漸變

<Rectangle Height="88" HorizontalAlignment="Left" Margin="54,28,0,0" Name="rectangle2" VerticalAlignment="Top" 
     Width="327" Cursor="Hand"> 
    <Rectangle.Style> 
     <Style TargetType="{x:Type Rectangle}"> 
      <Setter Property="Fill" Value="Transparent" /> 
      <Style.Triggers> 
       <Trigger Property="IsMouseOver" Value="True"> 
        <Setter Property="Fill"> 
         <Setter.Value> 
          <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1"> 
           <GradientStop Color="White" Offset="0.0" /> 
           <GradientStop Color="#eee" Offset="1" /> 
          </LinearGradientBrush> 
         </Setter.Value> 
        </Setter> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
    </Rectangle.Style> 
</Rectangle> 

但是,當我將鼠標懸停在矩形上方的其中一個標籤上時,背景漸變不顯示。

我想讓它在標籤和矩形上懸停時顯示漸變。

這可能嗎?

回答

1

如果「過度」你的意思是疊加,而不是上面你可以將這些內容包裝在一個網格(上面你可以做到這一點,以及我猜,但你應該定義行&列)並使用DataTrigger觸發如果鼠標在包裝網格,不僅矩形本身,如:

<Grid HorizontalAlignment="Center" VerticalAlignment="Center"> 
    <Rectangle Width="100" Height="100" StrokeThickness="1" Stroke="Black"> 
     <Rectangle.Style> 
      <Style TargetType="{x:Type Rectangle}"> 
       <Setter Property="Fill" Value="Transparent" /> 
       <Style.Triggers> 
        <DataTrigger Binding="{Binding IsMouseOver, RelativeSource={RelativeSource AncestorType=Grid}}" Value="True"> 
         <Setter Property="Fill"> 
          <Setter.Value> 
           <!-- Brush here --> 
          </Setter.Value> 
         </Setter> 
        </DataTrigger> 
       </Style.Triggers> 
      </Style> 
     </Rectangle.Style> 
    </Rectangle> 
    <Label Name="label" Content="This is a Label" /> 
</Grid> 

或者如果標籤被設置IsHitTestVisiblefalse疊加就可以使鼠標事件經過的標籤。

+0

在設計師的標籤設置爲矩形上方。 (在'訂單'上下文菜單中,矩形是'發送回'選項) 這個網格解決方案效果很好!謝謝。 – 2011-06-01 15:05:29

+0

我添加了另一種方法,除非您需要鼠標才能與標籤進行交互,否則應該更容易工作。 – 2011-06-01 15:06:28

+0

我不需要互動,所以你的第二種方法很好,再次感謝。 編輯:劃痕,一些標籤確實需要交互,所以第一種方法工作正常。 – 2011-06-01 16:02:56