2009-11-26 9 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

あなたはボタンテンプレートを変更する必要があり、これはあなたなしフレームとボタンを与えるどのようなので、今までになく、任意のキーを押しまたは無効に効果なし:

<Style TargetType="Button" x:Key="TransparentButton"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="Button"> 
       <Border Background="Transparent"> 
        <ContentPresenter/> 
       </Border> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 
:あなたのWindow.Resources要素で

そしてボタン:あなたはもう少し視覚的なフィードバックを必要とする場合

<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

あなたが望むものが得られるまで削除してください。

要素に透明な背景を追加することを忘れないでください。要素がない場合、または背景がnullの場合、透明な領域はクリックできません。

9

これは古い質問ですが、私は答えられると感じました。

私が問題を正しく理解している場合は、ボタンをクリックして移動した後、境界線が周囲に残っています。 TextBoxなどの他のアイテムをクリックすると、境界線が消えます。

この「境界」は「フォーカス」インジケータです。これを防止するために

は、ボタンの上に「Focusableの」「偽」に設定します。私はこのために探していた

<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

シンプルで完璧! – sga4

+1

この回答はまあまあです。 WPFの単純なソリューションでは、300行のコードと依存関係プロパティが必要です – JumpingJezza

関連する問題