2009-11-26 3 views
7

Come disabilitare il bordo del pulsante WPF quando clicco su di esso?Come disabilitare il bordo del pulsante WPF quando cliccato?

Ho creato il pulsante come di seguito, tutto funziona bene tranne quando faccio clic sul pulsante.

<Button Background="Transparent" BorderBrush="Transparent"> 
    <Button.Content> 
     <StackPanel> 
      <Image Source="xxx.png" /> 
      <TextBlock Text="Change Password" /> 
     </StackPanel> 
    </Button.Content> 
</Button> 

Quando faccio clic sul pulsante, ha il bordo come di seguito.

alt text http://www.freeimagehosting.net/uploads/8ece306bd4.png

cerco di creare lo stile per FocusVisualStyle del pulsante, ma non funzionano come mi aspetto, questo problema si verifica anche quando ho impostato IsDefault="True" troppo.

risposta

8

Potrebbe essere necessario cambiare il modello dei tasti, questo vi darà un pulsante senza la struttura che cosa così mai, ma anche senza premere o effetto disabilitato:

nel vostro elemento Window.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> 

e il pulsante:

<Button Style="{StaticResource TransparentButton}"> 
    <Button.Content> 
     <StackPanel> 
      <Image Source="xxx.png" /> 
      <TextBlock Text="Change Password" /> 
     </StackPanel> 
    </Button.Content> 
</Button> 

Ora, se avete bisogno di iniziare un po 'di feedback più visivo con questo modello:

http://msdn.microsoft.com/en-us/library/ms753328.aspx

e rimuovere le cose fino a ottenere quello che vuoi.

Non dimenticare di aggiungere uno sfondo trasparente ai tuoi elementi, se non ne hai uno, o hai uno sfondo nullo, l'area trasparente all'interno del pulsante non sarà cliccabile.

9

So che questa è una domanda vecchia, ma sentivo di poter rispondere.

Se ho capito il problema correttamente, dopo aver fatto clic sul pulsante e spostato su, un bordo rimane attorno ad esso. Quando fai clic su un altro elemento, come un TextBox o un altro pulsante, il bordo scompare.

Questo "bordo" è l'indicatore di "messa a fuoco".

Per evitare questo, impostare "Focusable" a "false" sul pulsante:

<Button Background="Transparent" BorderBrush="Transparent" Focusable="False"> 
    <Button.Content> 
     <StackPanel> 
      <Image Source="xxx.png" /> 
      <TextBlock Text="Change Password" /> 
     </StackPanel> 
    </Button.Content> 
</Button> 
+0

che cercavo questo ... thnx –

+0

semplice e perfetto! – sga4

+1

Bene, questa risposta è semplicemente folle. Tutti sanno che le soluzioni semplici in WPF richiedono 300 righe di codice e una proprietà di dipendenza – JumpingJezza