2009-08-18 428 views
3

我遇到將大字符串綁定到WPF中的TextBox的性能問題。將TextBox綁定到使用MVVM的WPF中的大字符串

在視圖中,我將TextBox的Text屬性綁定到視圖模型的Output屬性,它是一個StringBuilder。

查看:

<TextBox Text="{Binding Output, Mode=OneWay}" IsReadOnly="True"/> 

視圖模型:

public StringBuilder Output 
    { 
     get { return _output; } 
    } 

正如StringBuilder的文字變大的約束力降級的性能。

使用MVVM做這件事的更好方法是什麼?

+0

字符串有多大?如果您將'Output'更改爲輸入'string'並返回'_output.ToString()',而不是直接返回'_output',是否有區別? – 2009-08-18 16:09:58

回答

4

避免數據綁定中延遲的一種可能方式是使用異步綁定。您可以通過設置綁定對象的isAsync屬性做到這一點:

當然,這不會解決的結合需要很長時間的問題,但會結冰,而它的結合停止UI。

您還可以使用優先級綁定來顯示文本的縮減版本(可以快速加載),同時加載較大的文本項目。優先綁定在msdn上描述 - >http://msdn.microsoft.com/en-us/library/ms753174.aspx

0

我真的不能想象爲什麼綁定的性能會很慢,因爲它只是顯示StringBuilder中的內容。然而,我想到的第一件事是你如何添加到StringBuilder。追加,刪除,替換或插入字符到StringBuilder可能是什麼給你的性能問題。

我真的不知道你正在建造什麼樣的字符串或需求是什麼,但你可能需要使用不同的結構。