C# 窗口显示后标签中文本的动态变化

C# 窗口显示后标签中文本的动态变化,c#,wpf,visual-studio,C#,Wpf,Visual Studio,如何在打开窗口后动态更改标签中的文本? 窗口打开,显示文本1,几秒钟后变为文本2 public MainWindow() { InitializeComponent(); System.Threading.Thread.Sleep(5000); lblText.Content = "Sent for analysis"; System.Threading.Thread.Sleep(5000); lblText.Content = "Analysis in

如何在打开窗口后动态更改标签中的文本? 窗口打开,显示文本1,几秒钟后变为文本2

public MainWindow()
{
    InitializeComponent();
    System.Threading.Thread.Sleep(5000);
    lblText.Content = "Sent for analysis";
    System.Threading.Thread.Sleep(5000);
    lblText.Content = "Analysis in progress";
    System.Threading.Thread.Sleep(5000);
    lblText.Content = "Analysis results";
}
此时,仅当执行了所有操作且只有最后一个文本可见时,才会显示该窗口

这是一个示例代码。我的程序中有一个API,正在等待响应。该窗口仅在整个代码执行完毕以及Api在15秒后如何响应后显示


我希望它能在NetFramework3.0中工作。

将内容放入构造函数将阻止窗口加载。要快速破解,请将内容移动到OnContenterned。 还要进行异步调用并删除线程。睡眠 图中所示为布尔

protected override void OnContentRendered(EventArgs e)
{
    Task.Delay(5000);
    lblText.Content = "Sent for analysis";
    Task.Delay(5000);
    lblText.Content = "Analysis in progress";
    Task.Delay(5000);
    lblText.Content = "Analysis results";
}

注意:即使这个解决方案可行,我也不建议这样做。我建议花一些时间来理解WPF,然后用WPF的方式来尝试。使用正确的代码设计,使用async await和一些零代码落后的MVVM。

可能窗口事件和计时器就是一种方法。您需要对API的调用是异步的,然后需要在UI线程上应用lbl的值。或者你可以有一个视图模型,并以正确的方式执行此操作,不在任何地方抛出代码。还可以使用数据绑定,并将label.Text绑定到VIewModel中的字符串。异步更新它。不要直接更新标签。永远不要使用线程。睡眠等待,总是使用任务。延迟