2012-03-29 5 views
0

私のWPFアプリケーションにリストボックスがあります。ユーザーが上にスクロールして新しいアイテムが到着すると(ObversableCollection)、新しいアイテムが新しいトップアイテムとして表示されます。新しいListBoxアイテムの自動表示を回避する方法

新しいアイテムが到着したときにスクロール位置が変更されない場合、新しいアイテムが元のトップアイテムの上に見えないことを意味するように動作を変更できますか?

答えて

0

ObservbleCollectionの上部に新しいアイテムを挿入すると、リストボックスの上に表示されるようです。それらをソースの最後に追加すると、ListBoxの最後に表示されます。または、(たとえば、CollectionViewSourceを介して)ソートを行っている場合は、最後に追加された項目を表示するようにソートロジックを変更する必要があります。

+0

これは日付でソートされています - 最新のもの(これはTwitterクライアントにとって意味のあるものです)。この場合、並べ替えを変更することはできません:( –

0

ScrollIntoViewメソッドがありますが、リストのどこかに位置が保持されるだけではありません。項目が下にある場合は、最後の位置に置かれます。だから、アイテムが下にあるかのように、あなたが最後の位置に持って来るように、あなたが最後の時間を "正しい"ものにして、拳を押してください。私は3の単純なリストを持っており、ListView Height = 40にして2のためのスペースしか持たないようにしました。次のようにして最初のアイテムが表示されなくなりました。

lvKDNames.ScrollIntoView(liIDName [2]);

高さ=自動の場合は、適切な最終アイテムを判断するのが難しくなりますが、これは可能な方法です。

+0

Hm - これは確かに私が行ける方法かもしれません。私はOberservable Collectionのコレクション変更イベントで、新しく追加された項目の日付が新しいかどうかを判断できます現在のトップ1よりも - 表示が終了したら、もう一度ScrollIntoViewをもう一度行います。これは新しいアイテムのカウンタで、私はスクロールする必要があるインデックスを常に知っています。 –

+0

これは私が試してみたいものです。私はそれが期待どおりに働いている場合、フィードバックを与える(そしてどのように正確に)。ありがとう:) –

関連する問題