zoukankan      html  css  js  c++  java
  • WPF使用行为(Behavior)实现ListBox滚动条自动滚动

    前言

    在做一个日志面板时,当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>
    

    效果

    1

  • 相关阅读:
    CentOS VPS
    Make 命令教程
    Nginx 学习
    字体对齐问题
    postman curl
    linux命令
    服务器
    操作系统
    nginx-1.15遇到无法加载php文件报404的问题
    thinkphp6.0框架下载与安装
  • 原文地址:https://www.cnblogs.com/chonglu/p/15015909.html
Copyright © 2011-2022 走看看