2011-05-13 5 views
8

WPFで効率的なログビューアコントロールを使用して、メッセージが追加されるときにライブログを表示することができます。ログシステムからの通知に接続することは問題ありませんが、ログラインの数が増えると、追加されるログラインごとにログウィンドウがクロールされることに心配しています。WPFの効率的なライブログビューア

ログ通知イベントは、テキストボックス内の行に追加する、またはスクロールバーと同様のログ文字列(一部のメタとともに)を提供するだけです。十分なメモリがあると仮定すると、多数の行を追加することはメモリの問題ではないはずですが、行番号10,000が追加されるとシステムが遅くなるのは嫌です。

TextBoxを単純な文字列依存プロパティにバインドすると、文字列がMBサイズと何千もの行に変換されるとかなり遅くなると思います。

このようなコントロールをWPFで効率的に作成するにはどうすればよいですか?

+0

関連:[は何 iはWCFサービスから

EDIT2を来るメッセージを表示するように私のプロジェクトでデータグリッドを使用しますWPFでログビューをレンダリングする高速な方法?](http://stackoverflow.com/questions/430609/what-is-a-fast-way-to-render-a-log-view-in-wpf) – publicgk

答えて

11

なぜリストボックスを使用しないのですか?毎回ログメッセージを追加し、このコレクションをitemscontrol itemssourceにバインドするコレクションを作成します。

EDIT: 一部Itemsscontrolsが助けるべき次propertyがあります:

<ListBox VirtualizingStackPanel.IsVirtualizing="True" /> 
+0

Is行番号10,000を追加すると効率的に更新されるリストボックス?もしそうなら、それはうまくいくはずです。 – Holstebroe

+0

あなたはあなたのコレクションを更新していますが、itemsscontrolは直接更新していません:)あなたはあなただけで全体のコレクションの少しのサブセットを見ています。仮想化が鍵です。私のEDIT2を見てください – blindmeis

関連する問題