Заполните текстовые поля при отображении для пользователя - PullRequest
0 голосов
/ 19 января 2012

У меня есть страница 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 моего текстового поля, но вВ обоих случаях метод вызывался для всех элементов на странице, а не только для видимых.

Ответы [ 2 ]

0 голосов
/ 19 января 2012

Попробуйте использовать фоновый рабочий. Таким образом, текстовые поля будут постоянно заполняться в фоновом режиме, и пользовательский интерфейс останется отзывчивым.

BackgroundWorker worker = new BackgroundWorker();

worker.DoWork += delegate(object s, DoWorkEventArgs args)

{

    //Fill Textboxes

};



worker.RunWorkerAsync("XMLPATH");
0 голосов
/ 19 января 2012

Стоит отметить, что вы загружаете информацию последовательно.Из-за этого пользовательский интерфейс не имеет времени на рендеринг между каждой загрузкой TextBox.Таким образом, все элементов управления TextBox отображаются с загруженной информацией после завершения последовательного процесса.

Если вы хотите отобразить загруженную информацию в элементах управления TextBoxпостепенно, возможно, стоит запустить процесс загрузки в отдельном потоке или BackgroundWorker ( учебное пособие ).Таким образом, когда вы закончите загружать некоторую информацию для TextBox, вы можете перезвонить в поток Dispatcher и обновить TextBox.Затем WPF будет иметь возможность визуализировать информацию, пока вы продолжаете трудоемкий процесс загрузки в фоновом режиме (это также повышает удобство работы пользователя, а не создает впечатление замороженного приложения).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...