我点击按钮的边框背景是蓝色的,一秒钟后它应该是红色的。它是红色但不是蓝色。为什么?
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<Border Width="111" Name="op" Height="111">
<Button Name="opbtn" Click="opbtn_Click" Width="50" Height="23">click</Button>
</Border>
</Window>
Run Code Online (Sandbox Code Playgroud)
代码隐藏:
private void opbtn_Click(object sender, RoutedEventArgs e)
{
op.BorderBrush = System.Windows.Media.Brushes.Blue;
DateTime obj1 = new DateTime();
DateTime obj2 = DateTime.Now.AddMilliseconds(200);
while (obj2 > obj1)
{
obj1 = DateTime.Now;
}
op.BorderBrush = System.Windows.Media.Brushes.Red;
}
Run Code Online (Sandbox Code Playgroud)
因为您正在使用该循环绑定 UI 线程。UI 线程永远不会有机会将您的第一个更改应用于边框画笔,因为它正忙于在那个紧密循环中颠簸您的 CPU。您应该使用DispatcherTimer或 动画来实现这一点。使用示例DispatcherTimer:
private void opbtn_Click(object sender, RoutedEventArgs e)
{
op.BorderBrush = System.Windows.Media.Brushes.Blue;
var dispatcherTimer = new DispatcherTimer();
dispatcherTimer.Interval = TimeSpan.FromSeconds(1);
dispatcherTimer.Tick += delegate
{
op.BorderBrush = System.Windows.Media.Brushes.Red;
dispatcherTimer.Stop();
};
dispatcherTimer.Start();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4654 次 |
| 最近记录: |