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

Sti*_*nin 5 c# wpf

我编写了一个小程序来处理文本数据,然后将其写入文本文件.典型的工作流程如下:

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

这是问题所在.粘贴大量数据(600,000行等)时,即使粘贴事件立即发生,也需要一段时间直到数据实际出现在文本框中.我假设延迟是一个渲染问题.

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

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

我可能正在搜索错误的东西,因为我可以找到的是在继续执行代码之前强制重绘窗口的工作.这对我来说似乎是一个丑陋的黑客.我宁愿只是听一个"渲染完成"的事件.也许没有那样的东西.

Pse*_*nym 6

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

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

但是有一个技巧。您可以使用 Dispatcher 类异步执行代码。

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

此代码应添加到您的 Window Loaded 事件处理程序中。当窗口内的所有控件都被渲染时执行。似乎解决了您的问题