2012-03-29 22 views
0

我在我的WPF應用程序中有一個列表框。當用戶滾動到頂部並且新物品到達時(這是ObversableCollection),新的物品將顯示爲新的頂部物品。如何避免自動顯示新的ListBox項目

我可以改變的方式的行爲,當新郵件到達滾動位置不改變意味着新的一個是看不見原來的頂部項目之上。

回答

0

它看起來像在您的頂部插入新項目ObservbleCollection,以便它們顯示在列表框頂部。如果將它們添加到源代碼的末尾,那麼它們將顯示在ListBox的末尾。或者如果你有一些排序(例如通過CollectionViewSource),那麼你需要修改你的排序邏輯,以顯示最後添加的項目。

+0

它是按日期排序 - 最新的一個在頂部(這對Twitter客戶端來說是有意義的)。所以在這種情況下改變排序是不可能的:( – 2012-03-29 11:04:13

0

有一個ScrollIntoView方法,但它不會保留位置,只是它在列表中的某處。如果該項目低於它,則放入最後位置。所以如果你把最後一次「正確」的時間放在視圖中,把拳頭推下來,就好像物品在下面一樣,把它帶到最後的位置。我有一個簡單的列表3,我使ListView Height = 40,所以它只有2的空間。以下將第一個項目推出視圖。

lvKDNames.ScrollIntoView(liIDName [2]);

如果Height = Auto會更難以確定正確的最後一項,但這是一種可行的方法。

+0

嗯 - 這可能確實是我可以去的一種方式。無論如何,我在Oberservable Collection的收集改變事件中,我可以確定新添加的項目是否有更新的日期而不是當前的第一個 - 如果在顯示完成後我會再次滾動查看第二個。這與一個新項目的計數器,我總是會知道我需要滾動到的索引 – 2012-03-29 14:07:25

+0

這是我會嘗試的 - 將提供反饋意見,如果(以及如何)我得到它按預期工作。謝謝:) – 2012-03-29 14:09:09