我想改变使用C#的WPF按钮的颜色。WPF属性没有立即反映(只反映最后的变化)
比方说,我有一个WPF按钮,我想改变为1秒,其颜色:
<Button Name="Button1"></Button>
我也有一个按钮,用于启动一个变化:
<Button Name="ProcessControl" Click="ProcessControl_Click">Start</Button>
我有C#代码不作任何可见的变化:
private void ProcessControl_Click(object sender, RoutedEventArgs e)
{
Brush background = button.Background;
Button1.Background = System.Windows.Media.Brushes.Yellow;
Thread.Sleep(1000);
Button1.Background = background;
}
但是,如果我会写这个代码,哪个cha nges颜色,不等待第二个,它不会恢复旧的颜色,它的工作原理:
private void ProcessControl_Click(object sender, RoutedEventArgs e)
{
Brush background = button.Background;
Button1.Background = System.Windows.Media.Brushes.Yellow;
}
这是一个与所有WPF元素和属性同样的事情。如果某些属性发生了两次更改,只有最后一次更改才会反映出来
我也试着拨打:
this.UpdateLayout();
,但它不解决问题。
我试过使用后台工作,但它也不能解决我的问题。
现在是否有人如何立即反映使用C#的WPF中的属性更改?
这很可能是你的'线程。睡眠(1000)'会阻塞UI线程,因此按钮不会以新颜色重新绘制。你应该使用动画来代替http://msdn.microsoft.com/en-us/library/ms752312%28v=vs.110%29.aspx –