2009-11-26 18 views
7

¿Cómo desactivar el borde del botón WPF cuando hago clic en él?Cómo deshabilitar el borde del botón WPF al hacer clic en él?

Tengo el botón Crear como el siguiente, todo funciona bien excepto cuando hago clic en el botón.

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

Cuando hago clic en el botón, tiene un borde como el de abajo.

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

intento crear estilo para FocusVisualStyle del botón pero no funcionan como espero, también se produce este problema cuando me puse IsDefault="True" también.

Respuesta

8

Puede que tenga que cambiar la plantilla de botones, esto le dará un botón con ningún marco de lo que nunca, pero también sin ningún tipo de prensa o el efecto discapacitados:

En su Window.Resources elemento:

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

y el botón:

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

Ahora bien, si se necesita un poco de retroalimentación más visual se inicia con esta plantilla:

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

y elimine las cosas hasta que obtenga lo que desea.

No olvides agregar un fondo transparente a tus elementos, si no tienes uno, o si tienes un fondo nulo, no se podrá hacer clic en el área transparente dentro del botón.

9

Sé que esta es una vieja pregunta, pero sentí que podía responder.

Si entiendo el problema correctamente, después de hacer clic en el botón y seguir adelante, un borde permanece alrededor. Cuando hace clic en algún otro elemento, como un cuadro de texto u otro botón, el borde desaparece.

Este "borde" es el indicador de "enfoque".

Para evitar esto, establezca "enfocable" a "falso" en el botón:

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

que estaba buscando esto ... thnx –

+0

simple y perfecto! – sga4

+1

Bueno, esta respuesta es una locura. Todo el mundo sabe que las soluciones simples en WPF requieren 300 líneas de código y una propiedad de dependencia – JumpingJezza

Cuestiones relacionadas