[英]ListBox.ScrollIntoView() does not seem to work in WP7
每當將新項目添加到項目源時,我都想將列表框滾動條移動到底部,但是如果我將其傳遞給新添加項目的引用或其索引,則ScrollIntoView()
似乎沒有任何作用。 有沒有人讓它起作用,或者對我如何將列表框向下滾動到底部有任何其他建議?
一些代碼:
void Actions_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
{
//if a new item was added, set it to the selected item
if (e.NewItems != null)
{
MainListBox.SelectedIndex = e.NewStartingIndex;
//MainListBox.ScrollIntoView(MainListBox.Items.Last()); //todo: this doesnt seem to work
}
}
MSDN 說:
當 ItemsSource 集合的內容發生更改時,尤其是在集合中添加或刪除了許多項時,您可能需要在調用 ScrollIntoView 之前調用 UpdateLayout() 以將指定項滾動到視口中。
那可能是你的問題嗎?
這是答案:
http://dotnet-experience.blogspot.com.es/2010/12/wpf-listview-scrollintoview.html
簡而言之:項目是異步加載到 ListBox 中的,因此如果您在 CollectionChanged 事件(或類似事件)中調用 ScrollIntoView() ,它將不會有任何項目,因此不會滾動。
希望它有幫助,它肯定對我有幫助! ;-)
ScrollIntoView
絕對有效。 我剛剛向一個空的數據綁定應用程序添加了一個應用程序按鈕,並在單擊按鈕時執行以下操作導致列表滾動。
MainListBox.ScrollIntoView(MainListBox.Items.Last());
可能是selectionChanged
事件的問題嗎? 你有什么與之相關的嗎?
如果您不設置所選項目,ScrollIntoView 是否有效?
您可以始終在頂部插入新項目
yourItemList.Insert(0, item);
因此不需要 ScrollIntoView。 可能這會有所幫助!!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.