Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 承载在ElementHost控件中的WPF控件更改颜色_C#_.net_Wpf_Elementhost - Fatal编程技术网

C# 承载在ElementHost控件中的WPF控件更改颜色

C# 承载在ElementHost控件中的WPF控件更改颜色,c#,.net,wpf,elementhost,C#,.net,Wpf,Elementhost,我正在创建一个WPF“Button”控件,并使其成为ElementHost控件的子控件 按钮的背景设置为红色 当我运行我的项目时,按钮的颜色会发生变化,它似乎每隔几秒钟就会从红色变为浅蓝色,然后再变回来。。直到窗体失去焦点 如果我将鼠标悬停在按钮上,它会变成蓝色,然后当我离开按钮时,它会再次开始颜色循环。。我的代码非常简单 public partial class Form1 : Form { public Form1() { InitializeComponen

我正在创建一个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添加到同一表单中,您将看到只有聚焦按钮执行颜色循环

至于如何关闭它。。。我不知道,但恐怕不容易。我看不到按钮上有任何简单的属性会改变这种效果。这种效果通常是通过WPF风格的模板来实现的,这是一个让成年男性哭泣的主题。您可以在下面找到MSDN概述,但请注意,这假设您在WPF和XAML中工作,而不是在Windows窗体中工作:


我的猜测是,您必须将更改的聚焦样式与不会执行颜色循环的按钮相关联,或者发现聚焦样式循环到的第二个笔刷(背景除外)的资源名称,并将该资源设置为与背景相同的颜色。

我刚刚添加了一行。。但是,Focusable=false;现在它不再骑自行车了!!