2009-11-26 80 views
7

如何禁用WPF按鈕的邊框,當我點擊它?如何在點擊時禁用WPF按鈕的邊框?

我已經創建瞭如下圖所示的按鈕,除了當我點擊按鈕時,一切正常。

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

當我點擊按鈕時,它具有如下所示的邊框。

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

我嘗試到按鈕的FocusVisualStyle創造風格,但如我所料,也出現這個問題時,我設置IsDefault="True"過它不工作。

回答

8

您可能需要更改按鈕模板,這會給你沒有框架的按鈕什麼那麼,還沒有任何新聞或禁用效果:

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

而且按鈕:

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

現在,如果你需要更多一點視覺反饋開始與這個模板:

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

並刪除的東西,直到你得到你想要的。

不要忘記爲你的元素添加一個透明背景,如果你沒有,或者有一個空背景,teh按鈕中的透明區域將不會被點擊。

9

我知道這是一個老問題,但覺得我可以回答。

如果我正確地理解了這個問題,在點擊按鈕並繼續前進之後,邊框仍然留在它的周圍。當你點擊其他項目時,如文本框或另一個按鈕,邊框消失。

這個「邊界」是「焦點」指標。

爲了防止這種情況,設置按鈕「調焦」爲「假」:

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

我一直在尋找這...日Thnx – 2014-11-12 15:56:03

+0

簡單和完美! – sga4 2015-11-10 08:56:15

+1

那麼這個答案只是瘋狂。大家都知道WPF中的簡單解決方案需要300行代碼和依賴項屬性 – JumpingJezza 2016-06-02 07:28:42