2012-05-31 18 views
8

na myszy jest przycisk powinien pokazać granicy tleJak przycisku może pokazać to kliknięcie (wciśnięty) w WPF

się Stworzyłem prostym stylu

<UserControl.Resources> 
     <Style TargetType="Button" x:Key="TransparentButton"> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="Button"> 
         <Border Background="Transparent"> 
          <ContentPresenter/> 
         </Border> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 
    </UserControl.Resources> 

aw przycisku

<Button Height="20" Width="20" Padding="0,0,0,0" DockPanel.Dock="Top" Grid.Row="0" Grid.Column="1" Click="button_click" Style="{StaticResource TransparentButton}" 
        BorderBrush="Transparent" BorderThickness="0" Background="Transparent"> 
      <Button.Content> 
       <Image Source="../Resources/Help_icon.png" Stretch="UniformToFill" /> 
      </Button.Content> 
      </Button> 

, ale w tym przypadku po naciśnięciu przycisku nie pojawi się w interfejsie użytkownika, użytkownik powinien czuć, że przycisk jest naciśnięty.

Dzięki i pozdrowienia

Odpowiedz

10

Nie jestem pewien, co chcesz wizualnie, ale jeśli chcesz granicę zmienić kolor, gdy przycisk jest wciśnięty, należy zmodyfikować szablon tak:

<Style TargetType="Button" x:Key="TransparentButton"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="Button"> 
       <Border Name="border" Background="Transparent" BorderThickness="1" BorderBrush="Black"> 
        <ContentPresenter/> 
       </Border> 

       <ControlTemplate.Triggers> 
        <Trigger Property="Button.IsPressed" Value="True"> 
         <Setter TargetName="border" Property="BorderBrush" Value="Transparent" /> 
        </Trigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 
+0

Wielkie dzięki za pomoc Moozhe – User123

4

Kiedy odtworzyć ControlTemplate przycisku stracisz wszystkie cechy domyślne przycisku Windows czuć. Będziesz musiał utworzyć je ponownie za pomocą wyzwalaczy lub nie używać własnego szablonu kontrolnego.

<ControlTemplate.Triggers> 
    <Trigger Property="IsPressed" Value="True"> 
     <Setter ....behavior you want 
    </Trigger> 
</ControlTemplate.Triggers> 

Oto link do MSDN szablonu domyślnego sterowania przycisk ma, można go używać jako odniesienie do odtworzenia niektórych zachowań straciłeś definiując własne.

http://msdn.microsoft.com/en-us/library/ms753328%28v=vs.85%29.aspx

+0

jeśli usunę szablon kontrolny po kliknięciu ikony użytkownika zobacz przycisk jest wciśnięty ..... Czy możesz pomóc z przykładowym kodem dla wyzwalacza – User123

0
Try this one... 

<Style x:Key="PressedButtonEffect" TargetType="Button"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="Button"> 
        <Border Name="border" Background="Transparent" BorderThickness="1" BorderBrush="Gray"> 
         <ContentPresenter/> 
        </Border> 
        <ControlTemplate.Triggers> 
         <Trigger Property="Button.IsPressed" Value="True"> 
          <Setter TargetName="border" Property="BorderBrush" Value="DarkGray" /> 
          <Setter TargetName="border" Property="BorderThickness" Value="2" /> 
         </Trigger> 
        </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
Powiązane problemy