WPF如何让listbox中的滚动条一直在最下面

hsskaaa 2015-04-23 02:12:18
WPF如何让listbox中的滚动条一直在最下面
我在StackPanel中添加了一个listbox,listbox中有几个expander。我想让listbox中的滚动条在内容增多时一直处于最底下,找了很多方法,在我这里都不起作用。我用过的方法如下:
//listBox1.SelectedItem = listBox1.Items[listBox1.Items.Count - 1];
//listBox1.SelectedIndex = listBox1.Items.Count - 1;
//int i = Convert.ToInt16(listBox1.Items.Count * 0.1) ;
//listBox1.SelectedIndex = i;
//listBox1.ScrollIntoView(listBox1.Items[8]);
//listBox1.ScrollIntoView(listBox1.ItemsSource);

//listBox1.UpdateLayout();
//listBox1.ScrollIntoView(listBox1.Items[listBox1.Items.Count - 1]);
希望谁能告诉我一种其他已经在WPF中检验过的方法,或者告诉我下哪里可能出了问题?

...全文
2083 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
小眼聚光~ 2019-02-25
  • 打赏
  • 举报
回复 1
this.ScrollViewer.ScrollToEnd();
需要执行滚动条到最底部,执行这一句话,ScrollViewer为滚动条name
lengyang2016 2017-10-18
  • 打赏
  • 举报
回复
使用增加时钟 1. private void 测试系统_Load(object sender, EventArgs e) { timer2.Enabled = true; timer2.Interval = 20; } 2. private void timer2_Tick(object sender, EventArgs e) { if (listBox1.Items.Count > 0) { listBox1.SelectedIndex = listBox1.Items.Count - 1; } } 你就得到想要的置于底端了
21213gfhgf 2017-05-25
  • 打赏
  • 举报
回复
引用 8 楼 porenasckx 的回复:
使用这个泛型集合ObservableCollection<T> 然后用listBox.ScrollIntoView(listBox.Items[listBox.Items.Count - 1]);即可
试了不好用
  • 打赏
  • 举报
回复
引用 2 楼 duanzi_peng 的回复:
使用 http://blog.csdn.net/duanzi_peng/article/details/17094639 中的 GetChildObject方法,查找到 ScrollViewer ,通过ScrollToVerticalOffset 方法 设置偏移量,也就是你的ListBox的高度值。
好好看一下这个方法,可以解决问题
风之夜语者 2015-04-24
  • 打赏
  • 举报
回复
8楼是正确结果,我是刚接触这个,所以不熟悉listbox的各项属性和方法。
风之夜语者 2015-04-24
  • 打赏
  • 举报
回复
我的示例里面能起作用是因为我生成的ListBoxItem刚好值就是通过全局变量获得的i,所以直接就用Count取到了,所以我后面说代码有问题。
E次奥 2015-04-24
  • 打赏
  • 举报
回复
使用这个泛型集合ObservableCollection<T> 然后用listBox.ScrollIntoView(listBox.Items[listBox.Items.Count - 1]);即可
hsskaaa 2015-04-24
  • 打赏
  • 举报
回复
引用 5 楼 sthforme 的回复:
取得最后一行的值。
我参考你的代码试了一下,发现不知道怎么取到最后一行的值啊,还是不行。 另外我是把这些逻辑加在listboBOX的SelectionChanged事件里的。能给我一个正确的示例吗?万分感激!
hsskaaa 2015-04-24
  • 打赏
  • 举报
回复
引用 2 楼 duanzi_peng 的回复:
使用 http://blog.csdn.net/duanzi_peng/article/details/17094639 中的 GetChildObject方法,查找到 ScrollViewer ,通过ScrollToVerticalOffset 方法 设置偏移量,也就是你的ListBox的高度值。
谢谢回答,但是我刚开始学,不知道怎么用到ListboBOX里面
风之夜语者 2015-04-23
  • 打赏
  • 举报
回复
取得最后一行的值。
风之夜语者 2015-04-23
  • 打赏
  • 举报
回复
晕,习惯性按快捷键发出去了。实际代码是有问题的,用listBox1.ScrollIntoView方法没错,主要是要去的最后一行的值。
风之夜语者 2015-04-23
  • 打赏
  • 举报
回复
用 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace 教学 { /// <summary> /// MainWindow.xaml 的交互逻辑 /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } public void button1_Click(object sender, RoutedEventArgs e) { addi.i++; listBox1.Items.Add(addi.i); listBox1.ScrollIntoView(listBox1.Items.Count); } } }
exception92 2015-04-23
  • 打赏
  • 举报
回复
使用 http://blog.csdn.net/duanzi_peng/article/details/17094639 中的 GetChildObject方法,查找到 ScrollViewer ,通过ScrollToVerticalOffset 方法 设置偏移量,也就是你的ListBox的高度值。
hsskaaa 2015-04-23
  • 打赏
  • 举报
回复
求帮助
在Windows系统,notepad.exe(记事本)是一个“经典的”、“简洁的”文本编辑器。这个软件,没有华丽的外观,也没有繁杂的功能,仅仅是一个文本编辑小软件。虽然经过Windows系统数十年的变换,但它却保持着永恒姿态,数十年来几乎不曾改变过。曾经,VS的经典DEMO,就有它的身影,一个新建的项目,就藏有一个新建的“记事本”。然而,在WPF的项目,“记事本”却消失的无影无踪,也许是很容易实现,也许是为了革新,而不愿再传承“经典”。确实,使用WPF技术再次让“记事本”复活,确实也是一件非常容易的事情。但是,如果,使用WPF技术,再搭配当下非常流行的MVVM模式呢?复活“记事本”的难度却陡然上升至很多WPF程序员为之默默叹气。而,MVVM模式是掌握WPF的最顶级技术,MVVM模式拥有的无尽的优势,让WPF相对于过往的编程模式来说,是一种革命性的创新,从而也成为大WPF项目必须的模式。但,学习难度。。。。。。在这个《WPF记事本开发详解》的课程,赵老师带领你在WPF,从零开始一步步构建MVVM模式,直到让你亲自以WPF+MVVM的方式,让这个经典的“记事本”软件从你的手“复活”。在课程,赵老师会详细讲解WPF和MVVM的各种技巧,让你从此爱上WPF+MVVM编程。

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧