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到数据源上,这样通过修改绑定的数据源就可以实现数据驱动的滚动效果了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库