2011-05-29 115 views
4

我的問題是我有一個數據綁定的ItemsControl,列表中有一些數據,用戶可以上下滾動。在scrollviewer中保留位置

向列表中添加新項目(即用戶刷新列表)時,滾動位置根據其中的許多新項目而移動。添加新項目時是否有保持滾動位置的方法?

感謝

+0

你就不能存儲滾動位置,刷新後手動設置滾動位置回來嗎? – Kolky 2011-05-29 16:14:48

+0

例如,如果用戶位於列表的頂部,則偏移量將爲0.添加新項目時,偏移量仍將爲0. – 2011-05-29 16:18:29

回答

0

嘗試設置IsSynchronizedWithCurrentItem="True"在列表框

+0

這隻適用於ListBox並需要設置SelectedItem,SelectedItem可能並不總是當前列表框視圖頂部的項目 – 2011-05-29 16:21:59

0

假設所有項目都是固定高度的,你應該能夠經過調整的ScrollOffset加成是一定要採取的增加的號碼項目考慮。

+0

是的,我考慮過這個問題,但每個項目都是不同的高度,因爲每個項目的長度都有變化。也許我將不得不計算新項目的總高度,並通過調整滾動偏移... – 2011-05-31 05:19:58

1

如果您在ListBoxTombstoner.cs類[1]中查看Codeplex上的TombStone Helper項目,您會發現代碼可讓您獲取列表框的基礎ScrollViewer並獲取其VerticalOffset屬性。

然後,您可以隨意操作此屬性 - 如果您希望滾動位置在添加項目時移動,或者保持相同,則可以添加該屬性。

[1] http://tombstonehelper.codeplex.com/SourceControl/changeset/view/e737b2a34421#TombstoneHelper%2fListBoxTombstoner.cs

+0

我知道我需要訪問等,但它不是那麼簡單,但我找到了解決方案,並會發布當我有機會的時候,在這裏舉例代碼。謝謝 – 2011-07-13 10:32:58