在一段时间内更改按钮的颜色和文本

时间:2016-07-23 17:58:48

标签: c# .net wpf xaml

我必须在Click事件发生时更改按钮的文本和颜色,但只需几秒钟,就会出现文本和颜色的旧值。

这怎么可行?也许使用异步任务,在经过一段时间后重置值?

问题是我发现只有在click事件方法完成后才会更新颜色和文本。

1 个答案:

答案 0 :(得分:3)

我目前正在做很多关于异步和等待的研究,目前有点沉迷于它。所以我无法阻止自己回答这个问题。

查看下面的小样本:

XAML代码:

<Grid >
    <Button x:Name="Button1" Content="Click Me" Width="88" Height="44" Click="Button1_Click"/>
</Grid>

代码背后:

private async void Button1_Click(object sender, RoutedEventArgs e)
{
    Button1.Background = Brushes.Red;
    Button1.Content = "Clicked State";
    await Task.Delay(8000);
    Button1.Background = Brushes.Transparent;
    Button1.Content = "Click Me";
}
  

现在让我解释一下这里发生了什么:

     
      
  1. 单击该按钮时,将进入异步按钮单击事件处理程序Button1_Click。

  2.   
  3. 按钮颜色更改为红色,内容更改为&#34;点击状态&#34;。

  4.   
  5. 现在我们可以调用await Task.Delay(8000),即该函数的执行现在正在等待任务完成,这被延迟了   8秒执行返回到主UI线程,您的UI是   仍然敏感。

  6.   
  7. 完成8秒后,来自线程池的空闲线程将在等待之后再次开始执行该方法的其余部分。

  8.   
  9. 按钮更改为默认背景颜色,内容更改为&#34;单击我&#34;这是默认内容。

  10.   

希望这有帮助。