[英]WPF control hosted in an ElementHost control changes colour
我正在創建WPF“按鈕”控件,並將其作為ElementHost控件的子級。
按鈕的背景設置為紅色。
當我運行項目時,按鈕會更改顏色,並且似乎每隔幾秒鍾就會循環一次,從紅色變為淺藍色,然后再次返回..直到窗體失去焦點。
如果我將鼠標懸停在按鈕上,它將變成藍色,然后當我移開按鈕時,它將再次開始這種顏色循環。我的代碼非常簡單。
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;
}
}
這正常嗎? 我可以關閉它嗎?
是的,很正常。 WPF按鈕在具有輸入焦點時始終會產生微妙的顏色循環效果,而按鈕正是這種情況,因為它是窗體上的唯一控件。 在您的示例中,它不是很微妙,因為紅色與按鈕循環經過的其他藍色顏色之間有很長的距離-刪除該Background分配即可看到預期的效果。 嘗試將另一個帶有另一個WPF按鈕的ElementHost添加到相同的表單中,您會看到只有焦點按鈕會進行顏色循環。
至於如何關閉它...我不知道,但恐怕並不容易。 我在Button上看不到任何簡單的屬性可以改變這種效果。 這種效果通常通過WPF樣式模板來實現,而WPF樣式模板是使成年男子哭泣的主題。 您可以在下面找到MSDN概述,但是請注意,這是假設您在WPF和XAML而不是Windows Forms中工作:
http://msdn.microsoft.com/en-us/library/bb613570.aspx
我的猜測是,您將不得不將更改的Focused樣式與不會進行顏色循環的按鈕相關聯,否則將發現Focused樣式循環到的第二個筆刷(背景除外)的資源名稱,並進行設置資源與背景顏色相同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.