2012-05-31 12 views
8

Il mouse è in alto il pulsante dovrebbe mostrare lo sfondo del bordoCome pulsante in grado di dimostrare che cliccare (premuto) in WPF

Ho creato uno stile semplice

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

e pulsante

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

ma in questo caso quando viene premuto il pulsante non viene visualizzato nell'interfaccia utente, l'utente deve sentire che il pulsante è premuto.

Grazie e saluti

risposta

10

io non sono sicuro di quello che vuoi visivamente, ma se si desidera che il confine per cambiare colore quando viene premuto il pulsante, si dovrebbe modificare il modello come questo:

<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

Molte grazie per il tuo aiuto Moozhe – User123

4

Quando si ricrea la ControlTemplate del pulsante si perdono tutte le funzioni di default il tasto Windows si sentono. Dovresti ricrearli con i trigger o non utilizzare il tuo modello di controllo.

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

Ecco un link a MSDN modello di controllo di default un pulsante è, è possibile utilizzarlo come riferimento per ricreare alcuni dei comportamenti che hai perso definendo il proprio.

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

+0

se rimuovo il modello di controllo, dopo aver fatto clic sull'icona l'utente vede il pulsante premuto ..... Puoi aiutarmi con qualche codice di esempio per il trigger – 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> 
Problemi correlati