Eine Pause in WPF implementieren
Hier haben Sie ein einfaches WPF-Programm:
<code><!-- Updater.xaml --> <Window x:Class="Update.Updater" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525" DataContext="{Binding RelativeSource={RelativeSource Self}}"> <Grid> <StackPanel> <Button Click="Button_Click" Height="50"></Button> <Label Content="{Binding Label1Text}" Height="50"></Label> <Label Content="{Binding Label2Text}" Height="50"></Label> </StackPanel> </Grid> </Window> // Updater.xaml.cs using System.Threading; using System.Windows; namespace Update { public partial class Updater : Window { public Updater() { InitializeComponent(); } private void Button_Click(object sender, RoutedEventArgs e) { Label1Text = "It is coming..."; Thread.Sleep(3000); Label2Text = "It is here!"; } public string Label1Text { get { return (string)GetValue(CategoryProperty); } set { SetValue(CategoryProperty, value); } } static readonly DependencyProperty CategoryProperty = DependencyProperty.Register("Label1Text", typeof(string), typeof(Updater)); public string Label2Text { get { return (string)GetValue(Label2TextProperty); } set { SetValue(Label2TextProperty, value); } } static readonly DependencyProperty Label2TextProperty = DependencyProperty.Register("Label2Text", typeof(string), typeof(Updater)); } } </code>
Wenn Sie auf die Schaltfläche klicken, wird das erste Etikett angezeigtIt is coming...
. Dann ruht das Programm für 3 Sekunden und schließlich wird das zweite Etikett angezeigtIt is here!
. Die folgende naive Implementierung funktioniert jedoch nicht. Wenn Sie es ausführen und auf die Schaltfläche klicken, geschieht Folgendes: Das Programm ruht für 3 Sekunden, und dann werden die beiden Beschriftungstexte gleichzeitig angezeigt. Wissen Sie, wie Sie das Programm so korrigieren, dass es wie vorgesehen funktioniert?