2011-12-08 25 views
6

これは非常に迷惑なアーティファクトですが、私はWPFに気づいています。 WPF XAMLで簡単なコードである:WPFグラデーションでボタンをクリックすると、デフォルトの色と新しいグラデーションが1回クリックされます - 停止方法

<Window 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
x:Class="ExampleShapes.MainWindow" 
x:Name="Window" 
Title="MainWindow" 
Width="400" Height="400"> 
<Grid x:Name="LayoutRoot"> 
    <Button Margin="50,50,50,50" Content="I pulse when clicked Why?"> 
     <Button.Background> 
      <LinearGradientBrush EndPoint="0,1" StartPoint="0,0"> 
       <GradientStop Color="#FF0C0B0B" Offset="1"/> 
       <GradientStop Color="#FFBF5656"/> 
      </LinearGradientBrush> 
     </Button.Background> 
    </Button> 
</Grid> 

私がマウスオーバーのイベントとを知らないと私は望んでいないことをクリックしてください。NETにあるいくつかのデフォルト値があることが表示されます。マウスを動かしてグラデーションの色をデフォルトに変更しても、削除しても元に戻っても構いません。しかし、「CLICK」イベントの基になるC#コードを適用する前(例ではありません)でさえ、指定されたグラデーションとデフォルトの間を行き来する「脈動」動作を前提としています。これは単純な色でも当てはまります。何がありますか?

詳細私はVisual Studio 2010とExpression Blend 3でWindows 7の64ビットボックスを設計しています.VS2010用の.NET 4.0を使用しています。これは古いコピーであり、どちらもこれを行います。デフォルトの動作を変更する簡単な方法はありますか、ボタンの新しいユーザーテンプレートを設定する必要はありますか?

ご協力いただきありがとうございます。

+0

おっと...あなたは正しかった、それを完全にStackOverflowで忘れてしまった。ありがとう! – djangojazz

+0

デフォルトのマウス・オーバー・エフェクトを削除するには、ボタン・タイプ用の新しいコントロール・テンプレートを定義する必要があります。以下に、その方法を示すポストをいくつか示します。http://mark-dot-net.blogspot.com/2007/07/creating- custom-wpf-button-template-in.html http://mrpmorris.blogspot.com/2008/04/wpf-custom-button-templates.html – NeroBrain

+0

これはどうして起こるのですか?上記のリンクからFocusVisualStyleを削除しても、それでも機能しました。 – MBen

答えて

6

ボタンの[フォーカス]スタイルと関係があるようです。私は、 "パルス"動作を引き起こしているノーマルとマウスオーバーの背景の間で、デフォルトのフォーカスされたスタイルが交互に変わると推測しています。

ボタンをクリックするとフォーカスが当てられますが、ボタンにタブで移動するだけで同じ効果を得ることもできます。

編集

もう少しこのを見ると、入力フォーカスを持っている任意の要素のためのAeroテーマのデフォルトのようです。ボタンのFocusable="False"を設定することはできますが、ボタンをタップしたり、Enterキーを押したりすることはできますが、それでもクリックすることはできますが、個人的にキーボードでナビゲートできないアプリケーションは嫌いです。

クリックしたときに点滅しないようにするには、クリックイベントの最後に別のコントロールにフォーカスを設定しますが、ボタンをタップするとエフェクトが引き続き発生します。

+0

あなたはちょうど私の日を作った、ありがとう!私はXAMLのボタンの単純な属性だと思っていましたが、今は何かのために全く新しいリソーステンプレートを設定するのではなく、ただ消したいだけです。 – djangojazz

関連する問題