2011-12-11 20 views
0

WPFの「ボタン」コントロールを作成し、それをElementHostコントロールの子にします。ElementHostコントロールでホストされているWPFコントロールの色が変わります。

ボタンの背景が赤に設定されています。

私のプロジェクトを実行すると、ボタンの色が変わり、フォームがフォーカスを失うまで、赤から淡い青色に戻り、再び2秒ごとにループしているようです。

私はボタンの上に置くと、それは私がボタンをオフに移動したときに、それが再びルーピングこの色を開始し、青になり..私のコードは同じくらい簡単です。..

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
     System.Windows.Controls.Button but = new System.Windows.Controls.Button(); 
     but.Background = System.Windows.Media.Brushes.Red; 
     elementHost1.Child = but; 
    } 
} 

はこの正常ですか?私はそれをオフにすることはできますか?

+0

私はちょうどラインを追加しました.. but.Focusable = false;今はサイクリングが止まってしまった!! –

答えて

0

はい、正常です。 WPFボタンは、入力フォーカスがあるときには常に微妙なカラーサイクリング効果を行いますが、これはフォーム上の唯一のコントロールなので、ボタンの場合です。あなたの例ではあまり微妙ではありません。なぜなら、赤は、ボタンが循環する他の青い色から遠く離れているからです。意図したとおりの効果を見るために背景割り当てを削除します。別のWPFボタンを持つ別のElementHostを同じフォームに追加すると、フォーカスされたボタンだけがカラーサイクリングを行うことがわかります。

これをオフにする方法については...わかりませんが、簡単ではないと思います。この効果を変える単純なプロパティはButtonに表示されません。このような効果は一般的にWPFスタイルのテンプレートによって達成されます。これは成長した男性を泣かせるテーマです。あなたは、以下のMSDNの概要を見つけることが、これはあなたがいないWindowsフォーム内、WPFとXAML内で作業していると仮定していることに注意することができます

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

私の推測では、あなたが変更された集束スタイルを関連付けしなければならないということですカラーサイクリングを行わないボタン、またはFocusedスタイルが循環する2番目のブラシ(Background以外)のリソース名を検出し、そのリソースをBackgroundと同じ色に設定します。

関連する問題