2009-08-18 25 views
3

WPFのTextBoxに大きな文字列をバインドする際に、パフォーマンス上の問題が発生しています。MVVMを使用してWPFでTextBoxを大きな文字列にバインドする

ビューでは、TextBoxのTextプロパティをStringBuilderのビューモデルのOutputプロパティにバインドしています。

ビュー:

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

のViewModel:

public StringBuilder Output 
    { 
     get { return _output; } 
    } 

のStringBuilder内のテキストは、結合が低下のパフォーマンスを大きくなると。

MVVMを使用してこれを行うにはどうすればよいでしょうか?

+0

文字列の大きさはどれくらいですか? 'Output'を' string'と入力して '_output.ToString()'を直接返すのではなく、 '_output'を直接返すと違いはありますか? –

答えて

4

データバインディングの遅延を回避する方法の1つは、非同期バインドを使用することです。あなたのバインディングオブジェクトののisAsyncプロパティを設定することにより、これを行うことができます。

これはもちろん、長い時間をかけて結合の問題を解決するが、それは結合んしながら凍結からUIを停止しますありません。

優先度の高いバインディングを使用して、大きなテキスト項目が読み込まれている間にテキストの切り取りバージョン(読み込みが速い)を表示することもできます。優先度バインディングは、msdn - >http://msdn.microsoft.com/en-us/library/ms753174.aspxに記述されています。

0

StringBuilderの内容を単純に表示しているため、バインディングのパフォーマンスが低下する理由は、実際には想像もできません。しかし、私の頭に浮かぶ最初のことは、StringBuilderへの追加方法です。 StringBuilderに文字を追加、削除、置換、または挿入することは、パフォーマンス上の問題を引き起こす可能性があります。

ビルドしている文字列の種類や要件はわかりませんが、別の構造を使用する必要があります。

関連する問題