elementthost控件中的WPF控件会更改颜色
本文关键字:控件 颜色 WPF elementthost | 更新日期: 2023-09-27 18:17:24
我正在创建一个WPF 'Button'控件,并使其成为我的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按钮有输入焦点时,它们总是会产生微妙的颜色循环效果,对于您的按钮来说就是这样,因为它是表单上唯一的控件。在你的例子中,这并不是很微妙,因为红色距离按钮循环的另一种蓝色很远——删除背景分配以看到预期的效果。尝试在同一个表单中添加另一个带有另一个WPF按钮的ElementHost,您将看到只有聚焦的按钮才会进行颜色循环。
至于如何关掉它…我不知道,但恐怕这并不容易。我没看到Button上有任何简单的属性可以改变这个效果。这种效果通常是由WPF风格的模板实现的,这是一个让成年人哭泣的主题。你可以在下面找到MSDN概述,但请注意,这假设你在WPF和XAML中工作,而不是在Windows窗体中:
http://msdn.microsoft.com/en-us/library/bb613570.aspx我的猜测是,您将不得不将更改后的聚焦样式与不会进行颜色循环的按钮关联起来,否则将发现聚焦样式循环到的第二个画笔的资源名称(而不是背景),并将该资源设置为与背景相同的颜色。