2009-11-26 19 views
7

Tıklattığımda WPF düğmesinin kenarlığı nasıl devre dışı bırakılır?WPF düğmesinin kenarlığı, tıklatıldığında nasıl devre dışı bırakılır?

Aşağıdaki gibi bir düğme oluşturdum, düğmeyi tıklattığım zamanlar hariç her şey iyi çalışıyor.

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

Düğmeyi tıkladığımda aşağıdaki gibi bir kenarlığı vardır.

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

Ben düğmeye FocusVisualStyle için stil oluşturmak için denemek ama çok IsDefault="True" ayarladığınızda Ben, bu sorun da oluşabilir beklediğiniz gibi çalışmaz.

cevap

8

Sen düğme şablonunu değiştirmek gerekebilir, bu size hiçbir çerçeve ile bir düğme verecektir ne kadar şimdiye kadar, aynı zamanda herhangi bir basın veya özürlü etkisi olmadan:

<Style TargetType="Button" x:Key="TransparentButton"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="Button"> 
       <Border Background="Transparent"> 
        <ContentPresenter/> 
       </Border> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 
: En Window.Resources elemanı olarak

Ve düğme: Artık

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

, biraz daha görsel geribildirim, bu şablonla başlamak gerekirse:

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

ve istediğiniz şeyi alana kadar bir şeyler kaldırın.

Öğeleriniz için saydam bir arka plan eklemeyi unutmayın, yoksa, ya da boş bir arka plana sahip olan şeffaf alanın tıklanabilir olmayacaktır.

9

Bunun eski bir soru olduğunu biliyorum, ama cevap verebileceğimi hissettim.

Sorunu doğru anlıyorsam, düğmeyi tıkladıktan ve devam ettikten sonra bir kenarlık kalır. TextBox veya başka bir Düğme gibi başka bir öğeye tıkladığınızda, kenarlık kaybolur.

Bu "kenarlık", "odak" göstergesidir. Bunu önlemek için

, Düğmesi için "Odaklanabilir" "Yanlış" set: Ben bu arıyordu

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

... thnx –

+0

basit ve mükemmel! – sga4

+1

Peki bu cevap sadece delice. Herkes WPF'deki basit çözümlerin 300 satır kod ve bağımlılık özelliği gerektirdiğini bilir – JumpingJezza

İlgili konular