C# 承载在ElementHost控件中的WPF控件更改颜色
我正在创建一个WPF“Button”控件,并使其成为ElementHost控件的子控件 按钮的背景设置为红色 当我运行我的项目时,按钮的颜色会发生变化,它似乎每隔几秒钟就会从红色变为浅蓝色,然后再变回来。。直到窗体失去焦点 如果我将鼠标悬停在按钮上,它会变成蓝色,然后当我离开按钮时,它会再次开始颜色循环。。我的代码非常简单C# 承载在ElementHost控件中的WPF控件更改颜色,c#,.net,wpf,elementhost,C#,.net,Wpf,Elementhost,我正在创建一个WPF“Button”控件,并使其成为ElementHost控件的子控件 按钮的背景设置为红色 当我运行我的项目时,按钮的颜色会发生变化,它似乎每隔几秒钟就会从红色变为浅蓝色,然后再变回来。。直到窗体失去焦点 如果我将鼠标悬停在按钮上,它会变成蓝色,然后当我离开按钮时,它会再次开始颜色循环。。我的代码非常简单 public partial class Form1 : Form { public Form1() { InitializeComponen
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添加到同一表单中,您将看到只有聚焦按钮执行颜色循环 至于如何关闭它。。。我不知道,但恐怕不容易。我看不到按钮上有任何简单的属性会改变这种效果。这种效果通常是通过WPF风格的模板来实现的,这是一个让成年男性哭泣的主题。您可以在下面找到MSDN概述,但请注意,这假设您在WPF和XAML中工作,而不是在Windows窗体中工作:
我的猜测是,您必须将更改的聚焦样式与不会执行颜色循环的按钮相关联,或者发现聚焦样式循环到的第二个笔刷(背景除外)的资源名称,并将该资源设置为与背景相同的颜色。我刚刚添加了一行。。但是,Focusable=false;现在它不再骑自行车了!!