检测粘贴文本后WPF文本框何时完成渲染

本文关键字:文本 何时完 WPF 检测 | 更新日期: 2023-09-27 17:51:00

我编写了一个小程序来操作文本数据,然后将其写入文本文件。一个典型的工作流是这样的:

  1. 打开Excel文件,选择并复制整个工作表
  2. 将数据粘贴到我的WPF应用程序中的多行文本框中。
  3. 选择选项,点击导出,让它做它的事情。

问题在这里。当粘贴大量数据(600,000行等)时,即使粘贴事件立即发生,也需要一段时间才能将数据实际显示在文本框中。我假设延迟是渲染问题。

当粘贴事件触发时,我弹出一个状态窗口,提醒用户粘贴已经开始。

我想知道粘贴/重绘何时完成,因此我可以关闭状态窗口,但无法找到有关该主题的任何信息。

我可能是谷歌错误的东西,因为我所能找到的是围绕强迫窗口重新绘制继续执行代码之前的工作。在我看来这是一个丑陋的黑客。我宁愿简单地监听"渲染完成"事件。也许根本没有那样的东西

检测粘贴文本后WPF文本框何时完成渲染

看这里:http://geekswithblogs.net/ilich/archive/2012/10/16/running-code-when-windows-rendering-is-completed.aspx

WPF充满了惊喜。它使复杂的任务变得容易,但是同时也会使简单的任务变得过于复杂。一个很好的例子这种过于复杂的事情是如何运行代码,当你确定完成窗口渲染。Window Loaded事件并不总是工作,因为控件可能仍会呈现。我遇到了这个问题与inffragistics XamDockManager合作。继续渲染即使引发了"窗口加载"事件,也可以使用小部件。遗憾的是,对于这个问题没有任何"官方"的解决方案。

但是有一个技巧。可以使用异步执行代码调度器类。

Dispatcher.BeginInvoke(new Action(() => Trace.WriteLine("DONE!",
"Rendering")), DispatcherPriority.ContextIdle, null);

这段代码应该被添加到Window Loaded事件处理程序中。它是在呈现窗口内的所有控件时执行。似乎解决你的问题