天天看點

自定義Behavior 實作Listbox自動滾動到選中項

原文:

自定義Behavior 實作Listbox自動滾動到選中項

blend為我們提供友善的behavior來擴充我們的控件,寫好之後就可以在blend中友善的使用了。

下面是自定義的behavior來實作Listbox自動滾動到選中項

其中this.AssociatedObject為使用該行為的控件。

其中

OnAttached()和OnDetaching()為必須重寫的内容,通常可以在OnAttched()裡面添加事件處理程式,來達到拓展的目的。

public class AutoScrollBehavior : Behavior<ListBox>

    {

        protected override void OnAttached()

        {

            base.OnAttached();

            this.AssociatedObject.SelectionChanged += new SelectionChangedEventHandler(AssociatedObject_SelectionChanged);

        }

        void AssociatedObject_SelectionChanged(object sender, SelectionChangedEventArgs e)

            if (sender is ListBox)

            {

                ListBox listbox = (sender as ListBox);

                if (listbox.SelectedItem != null)

                {

                    listbox.Dispatcher.BeginInvoke((Action)delegate

                    {

                        listbox.UpdateLayout();

                        listbox.ScrollIntoView(listbox.SelectedItem);

                    });

                }

            }

        protected override void OnDetaching()

            base.OnDetaching();

            this.AssociatedObject.SelectionChanged -=

                new SelectionChangedEventHandler(AssociatedObject_SelectionChanged);

    }

歡迎探讨WPF技術問題 QQ:281092346