Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在WPF窗口中更改文本_C#_Wpf - Fatal编程技术网

C# 在WPF窗口中更改文本

C# 在WPF窗口中更改文本,c#,wpf,C#,Wpf,我使用WPF窗口,没有任何任务或委派 我只是搭建了一个小窗口,上面写着: 正在更新,请稍候 然后开始复制一些文件 最后应说明: 更新完成,祝您有愉快的一天 开始时,文本有所不同,这取决于一些初始因素。除了文本的变化,一切都很顺利 提醒一下:我没有任务之类的。一切都像在一个好的旧结构化编程技术中一样完成 但是当我做一些类似的事情时: CopyText.Text = "Please wait, files will be copied!"; 我没有零钱。即使我这样写: Dispatcher.Inv

我使用WPF窗口,没有任何任务或委派

我只是搭建了一个小窗口,上面写着:

正在更新,请稍候

然后开始复制一些文件

最后应说明:

更新完成,祝您有愉快的一天

开始时,文本有所不同,这取决于一些初始因素。除了文本的变化,一切都很顺利

提醒一下:我没有任务之类的。一切都像在一个好的旧结构化编程技术中一样完成

但是当我做一些类似的事情时:

CopyText.Text = "Please wait, files will be copied!";
我没有零钱。即使我这样写:

Dispatcher.Invoke(delegate
{
    CopyText.Text = "Please wait, files will be copied!";
});
我在窗口里找不到零钱。不知怎的,我觉得我错了


有人知道我做错了什么吗?

你更可能陷入一个流行的陷阱:在一个循环中完成所有工作(
?)。这意味着,什么文本将不会得到更新,直到你们完成你们的工作,然后UI才有机会重新绘制。解决方案很简单:将作业放入另一个线程(
thread
/
Task
/
BackgroundWorker
)或将作业拆分为多个部分,然后使用
计时器
一切都像在一个好的旧结构化编程技术中一样完成。
但没有MVVM?查找数据绑定和MVVMU是否在UI线程上复制文件(并阻止它)?
良好的旧结构化编程技术
不允许在处理其他事情时更新UI线程。为什么?因为它需要在重新绘制视图之前完成其工作。由于视图无法刷新,您将看到
旧的好的
没有响应的场景。有人知道我可能做错了什么吗?是的,您正在尝试使用WPF,就像它是WinForms或另一种优秀的旧结构化编程语言一样。。。但事实并非如此。学习如何正确使用它。