如何在打开窗口后动态更改标签中的文本? (窗口打开,显示文本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秒后)后,窗口才会显示。
我希望它在Net Framework 3.0中工作。
答案 0 :(得分:-2)
在构造函数中放置内容会阻止窗口加载。要快速破解,请将内容移至OnContentRendered。 还进行异步调用并删除Thread.Sleep 布尔_shown;
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)。