簡體   English   中英

托管在ElementHost控件中的WPF控件會更改顏色

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM