2016-07-31 24 views
1

Ich habe eine Schaltfläche mit einem Rückgängigmachen Bild darin. Ich möchte die Schaltfläche, um die Grenze erscheinen, wenn Benutzer auf die Schaltfläche klickt (drückt).Button IsPressed Trigger funktioniert nicht

<Button Margin="0,7,12,0" HorizontalAlignment="Right" Height="20" Width="23"> 
        <Button.Style> 
         <Style TargetType="{x:Type Button}"> 
          <Setter Property="Background" Value="White"/> 
          <Setter Property="Template"> 
           <Setter.Value> 
            <ControlTemplate TargetType="{x:Type Button}"> 
             <Border Background="{TemplateBinding Background}"> 
              <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/> 
             </Border> 
            </ControlTemplate> 
           </Setter.Value> 
          </Setter> 
          <Style.Triggers> 
           <Trigger Property="IsPressed" Value="True"> 
            <Setter Property="BorderThickness" Value="1"/> 
           </Trigger> 
           <Trigger Property="IsPressed" Value="False"> 
            <Setter Property="BorderThickness" Value="0"/> 
           </Trigger> 
          </Style.Triggers> 
         </Style> 
        </Button.Style> 
        <Image Grid.Column="0" Grid.Row="0" Margin="0,0,0,0" Height="20" Width="20" Source="/Images/Undo.png"> 
         <Image.Style> 
          <Style TargetType="Image"> 
           <Style.Triggers> 
            <Trigger Property="IsMouseOver" Value="True"> 
             <Setter Property="Opacity" Value="0.7"/> 
            </Trigger> 
           </Style.Triggers> 
          </Style> 
         </Image.Style> 
        </Image> 
       </Button> 

Aber es funktioniert überhaupt nicht. Jede Hilfe wird geschätzt!

+0

@jstreet können Sie bitte Ihre Lösung umbuchen. Ich war sehr beschäftigt, sorry und konnte es nicht markieren. Vielen Dank – Merv

Antwort

0

Ich habe die folgenden Änderungen an Ihrem Stil vorgenommen: 1) verschobene Trigger innerhalb ControlTemplate; 2) zugewiesen x:Name bis Border, so dass es im Trigger referenziert werden kann; 3) definiert BorderBrush.

<Button Margin="0" HorizontalAlignment="Center" Height="25" Width="75" VerticalAlignment="Center"> 
     <Button.Style> 
      <Style TargetType="{x:Type Button}"> 
       <Setter Property="Background" Value="White"/> 
       <Setter Property="Template"> 
        <Setter.Value> 
         <ControlTemplate TargetType="{x:Type Button}"> 
          <Border x:Name="b0" Background="{TemplateBinding Background}"> 
           <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/> 
          </Border> 
          <ControlTemplate.Triggers> 
           <Trigger Property="IsPressed" Value="True"> 
            <Setter Property="BorderThickness" TargetName="b0" Value="1"/> 
            <Setter Property="BorderBrush" TargetName="b0" Value="Blue"/> 
           </Trigger> 
          </ControlTemplate.Triggers> 
         </ControlTemplate> 
        </Setter.Value> 
       </Setter> 
      </Style> 
     </Button.Style> 
     <Image Grid.Column="0" Grid.Row="0" Margin="0,0,0,0" Height="20" Width="20" Source="/Images/Undo.jpg"> 
      <Image.Style> 
       <Style TargetType="Image"> 
        <Style.Triggers> 
         <Trigger Property="IsMouseOver" Value="True"> 
          <Setter Property="Opacity" Value="0.7"/> 
         </Trigger> 
        </Style.Triggers> 
       </Style> 
      </Image.Style> 
     </Image> 
    </Button> 

enter image description here

0

Es funktioniert nicht, da die Schaltflächenvorlage die Rahmenstärke direkt auf 1 setzt und das Attribut für die Rahmenstärke des Schaltflächenelements ignoriert. Sie ändern erfolgreich einen Wert, der nicht verwendet wird.

Sie müssen die Schaltflächenvorlage kopieren und ändern, wenn Sie die Randstärke ändern möchten.