2010-12-30 4 views
9

Ich möchte die Größe eines Steuerelements erhöhen, wenn der Benutzer die Maus bewegt.
Die Größenzunahme, die anderen Kontrollen nicht nachstellen sollte, vielmehr die Stromregelung sollte die benachbarten Kontrollen überlappen, wie bei Google-Suche (Bilder tab) unten gezeigt ist:WPF: Ein Maus über ein bestimmtes Steuerelement schweben, seine Größe und Überlappung auf den anderen Steuerelementen erhöhen

alt text

Das Bild mit rotem Rand Überlappungen die anderen Bilder.

Antwort

11

Sie könnten ScaleTransform in RenderTransform auf IsMouseOver verwenden. Wenn Sie möchten, dass die Skalierung von der Mitte der Steuerung durchgeführt wird, können Sie RenderTransformOrigin="0.5,0.5" verwenden. Außerdem müssen Sie möglicherweise den ZIndex im Trigger festlegen, um sicherzustellen, dass er über den anderen Steuerelementen angezeigt wird. Beispiel mit einem Textblock

aktualisieren
Probieren Sie es wie diese

<ItemsControl Margin="50"> 
    <ItemsControl.Resources> 
     <Style x:Key="ScaleStyle" TargetType="TextBlock"> 
      <Style.Triggers> 
       <Trigger Property="IsMouseOver" Value="True"> 
        <Setter Property="Grid.ZIndex" Value="1"/> 
        <Setter Property="RenderTransform"> 
         <Setter.Value> 
          <ScaleTransform ScaleX="1.1" ScaleY="1.1"/> 
         </Setter.Value> 
        </Setter> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
    </ItemsControl.Resources> 
    <TextBlock Style="{StaticResource ScaleStyle}" RenderTransformOrigin="0.5,0.5" Text="Something.." Background="Red" Height="20"/> 
    <TextBlock Style="{StaticResource ScaleStyle}" RenderTransformOrigin="0.5,0.5" Text="TextBlock2" Background="DarkBlue" Height="20"/> 
    <TextBlock Style="{StaticResource ScaleStyle}" RenderTransformOrigin="0.5,0.5" Text="TextBlock3" Background="DarkBlue" Height="20" Foreground="White"/> 
    <TextBlock Style="{StaticResource ScaleStyle}" RenderTransformOrigin="0.5,0.5" Text="TextBlock4" Background="DarkBlue" Height="20" Foreground="White"/> 
</ItemsControl> 
+0

Dank .. Dies funktioniert. –

+0

Das angehängte Bild zeigt einige zusätzliche Informationen, wenn die Maus über das Bild schwebt ... Wie kann dies ermöglicht werden ..? –

+0

@Sudhakar Singh: Das ist eine ziemlich schwierige Frage zu beantworten, ohne die Besonderheiten zu kennen. Sie könnten ein UserControl/CustomControl verwenden, in dem Sie nur die Details zu IsMouseOver anzeigen. Ein anderer Ansatz besteht darin, die Vorlage für den TextBlock (oder das von Ihnen verwendete Steuerelement) zu bearbeiten und die zusätzlichen Informationen dort hinzuzufügen und nur auf IsMouseOver anzuzeigen. Bitte posten Sie eine neue Frage mit den Details Ihres Problems, wenn Ihnen das nicht weiterhilft –

2

@Meleak ... Sie würden nicht den gewünschten Effekt, wenn Sie mehrere Textblocks zusammen gestapelt haben ....

für zB check this:

<ItemsControl> 
    <TextBlock Text="Something.." Background="Red" Height="20"> 
     <TextBlock.Style> 
      <Style TargetType="TextBlock"> 
       <Style.Triggers> 
        <Trigger Property="IsMouseOver" Value="True"> 
         <Setter Property="RenderTransform"> 
          <Setter.Value> 
           <ScaleTransform ScaleX="2" ScaleY="2"/> 
          </Setter.Value> 
         </Setter> 
        </Trigger> 
       </Style.Triggers> 
      </Style> 
     </TextBlock.Style> 
    </TextBlock> 
    <TextBlock Text="TextBlock2" Background="DarkBlue" Height="20" Foreground="White"></TextBlock> 
    <TextBlock Text="TextBlock3" Background="DarkBlue" Height="20" Foreground="White"></TextBlock> 
    <TextBlock Text="TextBlock4" Background="DarkBlue" Height="20" Foreground="White"></TextBlock> 
</ItemsControl> 
+0

Was ich brauche ist überlappende Wirkung der Steuerelemente auf andere Steuerelemente, wenn die Maus schwebt. –

+1

Aktualisiert meine Antwort. Haben Sie danach gesucht? –

3

Für eine Abschattung, zusammen mit dem Bild eine horizontale Ausrichtung zu geben:

<ItemsControl Margin="50,200,50,0"> 
     <ItemsControl.Resources> 
      <Style x:Key="ScaleStyle" TargetType="Image"> 
       <Style.Triggers> 
        <Trigger Property="IsMouseOver" Value="True"> 
         <Setter Property="Grid.ZIndex" Value="1"/> 
         <Setter Property="RenderTransform"> 
          <Setter.Value> 
           <ScaleTransform ScaleX="1.1" ScaleY="1.5" /> 
          </Setter.Value> 
         </Setter> 
        </Trigger> 
       </Style.Triggers> 
      </Style> 
     </ItemsControl.Resources> 

     <Image Height="100" Style="{StaticResource ScaleStyle}" RenderTransformOrigin="0.5,0.5" HorizontalAlignment="Left" Name="image1" Stretch="Fill" VerticalAlignment="Top" Width="100" Source="D:\Cablevision\Cable Vision RFP DOCs\WpfApplication1\WpfApplication1\square-house-design.jpg" MouseDown="image1_MouseDown"> 
       <Image.BitmapEffect> 
      <DropShadowBitmapEffect Color="Black" Direction="320" 
    ShadowDepth="25" Softness="1" Opacity="0.5"/> 
      </Image.BitmapEffect> 
     </Image> 


     <Image Height="100" Margin="110,-100,0,0" Style="{StaticResource ScaleStyle}" RenderTransformOrigin="0.5,0.5" HorizontalAlignment="Left" Name="image2" Stretch="Fill" VerticalAlignment="Top" Width="100" Source="D:\Cablevision\Cable Vision RFP DOCs\WpfApplication1\WpfApplication1\file.jpg" > 
         <Image.BitmapEffect> 
      <DropShadowBitmapEffect Color="Black" Direction="320" 
    ShadowDepth="25" Softness="1" Opacity="0.5"/> 
      </Image.BitmapEffect> 
     </Image > 
     <Image Height="100" Margin="220,-100,0,0" Style="{StaticResource ScaleStyle}" RenderTransformOrigin="0.5,0.5" HorizontalAlignment="Left" Name="image3" Stretch="Fill" VerticalAlignment="Top" Width="100" Source="D:\Cablevision\Cable Vision RFP DOCs\WpfApplication1\WpfApplication1\file.jpg" MouseEnter="image1_MouseEnter" MouseLeave="image1_MouseLeave" /> 



    </ItemsControl> 
Verwandte Themen