Как вызвать функцию, которая загружает элементы пользовательского интерфейса в другую панель стека из основного потока в приложении WPF C # - PullRequest
0 голосов
/ 02 октября 2018

Привет, я работаю в приложении WPF C # и я новичок.

В моем приложении есть панель стека, которая позволяет называть эту панель стека первой панелью стека.Эта панель стека имеет одно текстовое поле, ширина и высота которого не установлены.Его поле равно 100. Его обтекание текстом настроено на перенос.

Пользователь предоставляет текстовую информацию в текстовое поле.Если пользователь хочет больше текстового поля, то есть кнопка.После нажатия этой кнопки на первой панели стека появляется новое текстовое поле с предыдущими свойствами текстового поля и пользователь непрерывно печатает.

Основная цель - показать предварительный просмотр первой панели стека при вводе текста пользователем в текстовые поля первой панели стека.

Итак, что я сделал: у меня есть другая панель стека, давайте назовем эту вторую панель стека рядом с первой панелью стека.Существует функция или метод, который вызывается при каждом нажатии клавиши.Эта функция или метод собирает весь текст из каждого текстового поля из первой панели стека в список (типа string), а затем добавляет каждую строку из списка как текстовый блок (дочерние элементы) во вторую панель стека.И как только вся строка из списка добавляется во вторую панель стека, текстовое поле из первой панели стека возвращается назад, чтобы пользователь мог продолжить ввод текста.

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

Чтобы преодолеть ситуацию, я использовал следующий код:

private void OnPreviewKeyUp(object sender, KeyEventArgs e){

//code to collect text from each textbox from first stackpanel and add into a list of type string.

           this.Dispatcher.Invoke(()=> {
                    ReloadTextInfoToPanel(textBoxTextList);   
             });
}

код выше, все еще занимает столько же времени.Я даже пытался использовать

this.Dispatcher.InvokeAsync ();

Но столько же времени это занимает.

Я хочу, чтобы, когда пользователь печатал в текстовых полях первой панели стека, функция или метод вызывались независимо, без блокировки элемента управления.

Надеюсь, вы поняли, в чем проблема.Простите мой плохой английский.Пожалуйста, ведите меня.Заранее спасибо.

1 Ответ

0 голосов
/ 02 октября 2018

Это не прямой ответ на ваш вопрос, но я не могу комментировать, но все же хочу попытаться помочь


Вы можете обновить вторую панель каждую секунду или две (используя таймер) вместо каждого нажатия клавиши.Это значительно сократит время обновления, но может не беспокоить пользователя.

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