WPF实现按下按钮后,按钮变为黄色,过3s后变为红色
时间: 2024-10-16 21:11:37 浏览: 18
在WPF中,你可以通过XAML和C#代码结合来实现这样的效果。首先,在XAML部分,设置按钮的基本样式,并绑定到一个Command属性上:
```xml
<Button x:Name="myButton" Content="点击我" Background="White"
Command="{Binding MyChangeColorCommand}" />
```
然后,在你的ViewModel中创建一个`ICommand`,例如`RelayCommand`,并定义它的行为:
```csharp
public class ViewModel : INotifyPropertyChanged
{
public ICommand MyChangeColorCommand { get; set; }
private SolidColorBrush _currentColor = new SolidColorBrush(Colors.Yellow);
public SolidColorBrush CurrentColor
{
get { return _currentColor; }
set
{
_currentColor = value;
OnPropertyChanged("CurrentColor");
}
}
public ViewModel()
{
MyChangeColorCommand = new RelayCommand(() => ChangeColor());
}
private void ChangeColor()
{
CurrentColor = IsYellow ? Brushes.Red : Brushes.Yellow; // 初始颜色为黄
Task.Delay(3000).ContinueWith(task =>
{
Dispatcher.Invoke(() => CurrentColor = Brushes.Red); // 进入UI线程改变颜色
});
}
// INotifyPropertyChanged 部分省略...
}
```
在这个例子中,当按钮被按下时(由`MyChangeColorCommand`触发),背景颜色会变为黄色,然后在3秒后异步地变为红色。`Dispatcher.Invoke`用于确保在UI线程上修改控件的颜色。
阅读全文