2013-11-10 3 views
1

У меня есть RichTextBox с FlowDocument, как это:WPF RichTextBox изменения размера производительность

var mcFlowDoc = new FlowDocument(); 
var para = new Paragraph(); 
para.Inlines.Add(textBlock1); 
para.Inlines.Add(textBlock2); 
para.Inlines.Add(textBlock3); 
mcFlowDoc.Blocks.Add(para); 
richTextBox1.Document = mcFlowDoc; 

При изменении размера окна, есть небольшая задержка в оказании, особенно когда количество текстовых блоков больше (30+) и всегда есть мерцание.

Есть ли способ сделать изменение размера более быстрым и плавным?

ответ

0

В нашем коде WPF мы столкнулись с проблемами, когда мы начали интенсивно использовать RichTextBox. Не особенно проблем, в основном чрезмерное использование памяти.

Решение, которое я принял, также может помочь вам: мы предоставили документ без RichTextBox. Вы можете преобразовать контекст RichTextBox в readonly WPF TextBlock.

Когда пользователь выбирает элемент управления, мы заменяем TextBlock на RichTextBox с тем же содержимым.

Мы выполнили вышеуказанное поведение в пользовательском элементе управления. Существует также некоторые настройки, чтобы получить TextBlock, чтобы сделать то же самое, что и RichTextBox (в основном, margin/padding).

+0

Я попробую это. Благодаря! – Jerry

+0

ОК, только что проверил это. Это дает ту же производительность. – Jerry

+0

@ Джерри: жаль, что не ответил раньше. Жаль, что он не работает. Это интересно. Может быть, это алгоритм переноса слов, который занимает много времени. Или, возможно, ваш макет является «дорогостоящим», возможно, из-за того, что размер элементов управления редактирования зависит от их содержимого, где они могут быть фиксированным. –

Смежные вопросы