簡體   English   中英

ListBox.ScrollIntoView() 在 WP7 中似乎不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM