我想改變使用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 –