向用户显示时填充文本框
本文关键字:文本 填充 用户 显示 | 更新日期: 2023-09-27 18:20:51
我有一个WPF页面,上面有很多文本框,所有文本框都必须从xml数据加载(这需要太长时间)。
var tRange = new TextRange(tbox.Document.ContentStart, tbox.Document.ContentEnd);
using (var stream = new MemoryStream(value))
{
tRange.Load(stream, DataFormats.Xaml);
}
有没有一种方法可以在向用户显示文本框时加载文本框的内容?它们都在ScrollView中,但在任何时候都只能看到其中的一小部分。
注意:我试图在Loaded事件和文本框的OnRender事件中进行加载,但在这两种情况下,都为页面上的所有项目调用了该方法,而不仅仅是可见的项目。
这里需要注意的一点是,您正在按顺序加载信息。因此,UI没有时间在每次加载TextBox
之间进行渲染。因此,一旦顺序过程完成,所有TextBox
控件都将显示加载的信息。
如果要在TextBox
控件中增量显示加载的信息,则可能值得在单独的线程或BackgroundWorker
上运行加载过程(教程)。这样,当您完成为TextBox
加载一些信息时,您可以回调到Dispatcher
线程并更新TextBox
。然后,当您在后台继续费力的加载过程时,WPF将有机会呈现信息(这也有助于获得更好的用户体验,而不是获得冻结应用程序的外观)。
尝试使用后台工作程序,这样一来,后台文件中的文本框就会不断填满,用户界面也会保持响应。
BackgroundWorker worker = new BackgroundWorker();
worker.DoWork += delegate(object s, DoWorkEventArgs args)
{
//Fill Textboxes
};
worker.RunWorkerAsync("XMLPATH");