• 當前位置:首頁 > IT技術 > Windows編程 > 正文

    WPF使用行為(Behavior)實現ListBox滾動條自動滾動
    2021-09-17 11:51:19


    前言

    在做一個日志面板時,當ListBox被裝滿,我們需要手動去滾動進度條,才能看到最新的信息,所以我需要讓它實現自動滾動,實現并不難,最主要的其實就是拿到總行數減去1。但在WPF中一般情況下是避免直接對控件進行操作的,實現也有好幾種,這里記錄一下我使用Behavior實現的過程。

    代碼實現

    CS:

    public class ListBoxScrollToBottomBehavior : Behavior<ListBox>
    {
    protected override void OnAttached()
    {
    base.OnAttached();
    //ICollectionView類型才有CollectionChanged事件
    ((ICollectionView)AssociatedObject.Items).CollectionChanged += ListBoxScrollToBottomBehavior_CollectionChanged;
    }

    protected override void OnDetaching()
    {
    base.OnDetaching();
    ((ICollectionView)AssociatedObject.Items).CollectionChanged -= ListBoxScrollToBottomBehavior_CollectionChanged;
    }

    private void ListBoxScrollToBottomBehavior_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
    {
    if (AssociatedObject.HasItems)
    {
    AssociatedObject.ScrollIntoView(AssociatedObject.Items[AssociatedObject.Items.Count - 1]);
    }
    }
    }


    XAML:

    添加??interactivity??命名空間

    xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"


    在控件內部使用

    <i:Interaction.Behaviors>
    <behavior:ListBoxScrollToBottomBehavior />
    </i:Interaction.Behaviors>


    效果

    WPF使用行為(Behavior)實現ListBox滾動條自動滾動_命名空間


    ?



    ?


    ?


    ?


    本文摘自 :https://blog.51cto.com/u

    開通會員,享受整站包年服務
    国产呦精品一区二区三区网站|久久www免费人咸|精品无码人妻一区二区|久99久热只有精品国产15|中文字幕亚洲无线码