2016-07-31 3 views
1

У меня есть кнопка с изображением отмены внутри. Я хочу, чтобы кнопка создавала границу, когда пользователь нажимает кнопку (нажата).Кнопка IsPressed Trigger Not Working

<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> 

Но его вообще не работает. Любая помощь будет оценена!

+0

@jstreet пожалуйста, вы можете перепечатывать ваше решение. Я был очень занят, сожалею, и не мог пометить его. благодаря – Merv

ответ

0

Я вносил следующие изменения в свой стиль: 1) перемещенные триггеры в пределах ControlTemplate; 2) присвоено значение x:Name - Border, поэтому на триггер можно ссылаться; 3) определено 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

Это не работает, потому что шаблон кнопки устанавливает толщину границы 1 непосредственно, игнорируя атрибут толщины границы самого элемента кнопки. Вы успешно меняете значение, которое не используется.

Вам нужно будет скопировать и изменить шаблон кнопки, если вы хотите изменить толщину границы.