我编写了一个小程序来处理文本数据,然后将其写入文本文件。典型的工作流程是:
这就是问题所在。粘贴大量数据(600,000行等)时,即使粘贴事件立即发生,也需要一段时间直到数据实际出现在文本框中。我假设延迟是一个渲染问题。
当粘贴事件触发时,我弹出一个状态窗口,提醒用户粘贴已经开始。
我想知道粘贴/重绘何时完成,因此我可以关闭状态窗口,但无法找到有关该主题的任何信息。
我可能在搜索错误的东西,因为我能找到的就是在继续执行代码之前强制重绘窗口。这对我来说似乎是一个丑陋的黑客。我只是简单地听一个"渲染完成"事件。也许没有类似的东西。
答案 0 :(得分:4)
WPF充满了惊喜。它使复杂的任务更容易,但在 同时也使简单的任务过于复杂化。一个很好的例子 这样过于复杂的事情是如何在你确定的时候运行代码 窗口渲染完成。 Window Loaded事件并不总是如此 工作,因为控件可能仍然呈现。我有这个问题 使用Infragistics XamDockManager。它继续渲染 即使已经引发了Window Loaded事件,也会出现小部件。 不幸的是,没有任何“官方”解决方案可以解决这个问题。
但是有一个技巧。您可以使用异步执行代码 调度员班。
Dispatcher.BeginInvoke(new Action(() => Trace.WriteLine("DONE!",
"Rendering")), DispatcherPriority.ContextIdle, null);
此代码应添加到Window Loaded事件处理程序中。它是 在窗口中的所有控件都被渲染时执行。好像 解决你的问题