2012-04-10 10 views
0

Ich erstelle einen Button-Stil. Fügen Sie diese in ein Fenster, um die Idee zu sehen:WPF Drop Shadow Trigger

<Style x:Key="SelectionButton3" 
     TargetType="{x:Type Button}"> 

    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type Button}"> 

       <Grid HorizontalAlignment="Stretch" 
         VerticalAlignment="Stretch" 
         ClipToBounds="False"> 

        <Grid.RowDefinitions> 
         <RowDefinition Height="75"/> 
        </Grid.RowDefinitions> 
        <Grid.ColumnDefinitions> 
         <ColumnDefinition Width="100"/> 
         <ColumnDefinition Width="*"/> 
        </Grid.ColumnDefinitions> 

        <Border x:Name="TheBorder" 
          BorderThickness="0,1.5,1.5,1.5" 
          CornerRadius="3" 
          Background="SteelBlue" 
          Height="35" 
          Grid.Column="1" 
          Grid.Row="0" 
          Margin="-31" 
          BorderBrush="DarkSlateBlue"> 

         <Border.BitmapEffect> 
          <DropShadowBitmapEffect x:Name="BorderShadow" 
                ShadowDepth="0"/> 
         </Border.BitmapEffect> 

        </Border> 

        <Rectangle Fill="SteelBlue" 
           Stroke="DarkSlateBlue" 
           Grid.Row="0" 
           Grid.Column="0"> 

         <Rectangle.LayoutTransform> 
          <RotateTransform Angle="-45" /> 
         </Rectangle.LayoutTransform> 

         <Rectangle.BitmapEffect> 
          <DropShadowBitmapEffect ShadowDepth="5"/> 
         </Rectangle.BitmapEffect> 

        </Rectangle> 

        <ContentPresenter x:Name="ContentArea" 
             VerticalAlignment="Center" 
             HorizontalAlignment="Center" 
             Content="{Binding Path=Content, RelativeSource={RelativeSource TemplatedParent}}" /> 
       </Grid> 

      </ControlTemplate> 
     </Setter.Value> 

    </Setter> 

    <Setter Property="Foreground" 
      Value="LightGray" /> 
    <Setter Property="FontFamily" 
      Value="Segoe UI" /> 



</Style> 

<Button Click="Button_Click" 
     Style="{StaticResource SelectionButton3}" 
     Width="185"> 

</Button> 

Was ich möchte passieren müssen, ist für die Grenzen fallen Schatten erscheinen, wenn sich die Maus über dem Rand oder dem Rechteck befindet. Ich weiß, ich brauche einen Auslöser, aber ich bin nicht wirklich sicher, wo &, wie es geht.

Kann mir jemand in die richtige Richtung zeigen?

Dank

Antwort

1
<Style x:Key="SelectionButton3" 
     TargetType="{x:Type Button}"> 

    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type Button}"> 

       <Grid HorizontalAlignment="Stretch" 
         VerticalAlignment="Stretch" 
         ClipToBounds="False"> 

        <Grid.RowDefinitions> 
         <RowDefinition Height="75"/> 
        </Grid.RowDefinitions> 
        <Grid.ColumnDefinitions> 
         <ColumnDefinition Width="100"/> 
         <ColumnDefinition Width="*"/> 
        </Grid.ColumnDefinitions> 

        <Border x:Name="TheBorder" 
          BorderThickness="0,1.5,1.5,1.5" 
          CornerRadius="3" 
          Background="SteelBlue" 
          Height="35" 
          Grid.Column="1" 
          Grid.Row="0" 
          Margin="-31" 
          BorderBrush="DarkSlateBlue"> 
        </Border> 

        <Rectangle Name="rect" Fill="SteelBlue" 
           Stroke="DarkSlateBlue" 
           Grid.Row="0" 
           Grid.Column="0"> 

         <Rectangle.LayoutTransform> 
          <RotateTransform Angle="-45" /> 
         </Rectangle.LayoutTransform> 

        </Rectangle> 

        <ContentPresenter x:Name="ContentArea" 
             VerticalAlignment="Center" 
             HorizontalAlignment="Center" 
             Content="{Binding Path=Content, RelativeSource={RelativeSource TemplatedParent}}" /> 
       </Grid> 
       <ControlTemplate.Triggers> 
        <Trigger Property="IsMouseOver" Value="True"> 
        <Setter TargetName="TheBorder" Property="BitmapEffect"> 
         <Setter.Value> 
         <DropShadowBitmapEffect ShadowDepth="0" /> 
         </Setter.Value> 
        </Setter> 
        <Setter TargetName="rect" Property="BitmapEffect"> 
         <Setter.Value> 
         <DropShadowBitmapEffect ShadowDepth="5"/> 
         </Setter.Value> 
        </Setter> 
        </Trigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 

    </Setter> 

    <Setter Property="Foreground" 
      Value="LightGray" /> 
    <Setter Property="FontFamily" 
      Value="Segoe UI" /> 



</Style> 

Beachten Sie, dass es sei denn, Sie .NET 3.0 oder 3.5 Pre SP1 verwenden, können Sie Effect statt BitmapEffect verwenden sollten. Die BitmapEffect Eigenschaft wurde veraltet in 3.5 SP1

+0

Vielen Dank. Das hat es getan – CoderForHire