• WPF中ListView滚动到当前行的几种方法


    其实ListBox和ListView在这里是一样的。

    1、使用方法ScrollIntoView

    ListView继承自ListBox,ListBox有这个方法,可以滚动到指定的item。

    listBox.ScrollIntoView(listBox.Items[listBox.Items.Count - 1]);//移动到最后一行

    使用的时候需要给控件加上x:Name。如果要用数据驱动的话,感觉上直接后台调用前台的控件是不太合适的。所以有第二种方法Behavior。

    2、使用Behavior

    上链接:https://github.com/microsoft/XamlBehaviorsWpf

    引入命名空间

     xmlns:behaviors="http://schemas.microsoft.com/xaml/behaviors"

    在ListView下使用

    <behaviors:Interaction.Behaviors>
        <local:AutoScrollBehavior />
    </behaviors:Interaction.Behaviors> 

    类的实现

        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)
                {
                    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);
            }
        }

    ListBox控件需要绑定SelectedItem到数据源上,这样通过修改绑定的数据源就可以实现数据驱动的滚动效果了。

  • 相关阅读:
    P2048 [NOI2010]超级钢琴 (rmq +堆+贪心)
    题解 P4799 【[CEOI2015 Day2]世界冰球锦标赛】
    洛谷 P1360 [USACO07MAR]Gold Balanced Lineup G (前缀和+思维)
    洛谷 P4880 抓住czx
    洛谷 P2471 [SCOI2007]降雨量
    洛谷 P4688 [Ynoi2016]掉进兔子洞 (看到题目背景,galgame玩家狂喜)
    洛谷 P2101 命运石之门的选择 (分治)
    留言版
    【游记】OI 2020(在更)
    类欧几里得算法
  • 原文地址:https://www.cnblogs.com/pasoraku/p/15132997.html
Copyright © 2020-2023  润新知