相关文章推荐
虚心的海龟  ·  第五届亞洲創新發明展覽會—香港 | ...·  5 月前    · 
跑龙套的手链  ·  2026年南方医科大学生物医学工程学位评定分 ...·  1 年前    · 
风流倜傥的麦片  ·  Unsupported browser·  1 年前    · 
近视的茶壶  ·  如何使用铁锈中的env_logger机箱在I ...·  2 年前    · 
豪气的弓箭  ·  部门动态_重庆市民族宗教事务委员会·  2 年前    · 
小百科  ›  WPF 加以解决 ListView 的滚动条不表明-腾讯云开发者社区-腾讯云
listview wpf 滚动条
大气的日光灯
2 年前
林德熙

WPF 解决 ListView 的滚动条不显示

前往专栏
腾讯云
开发者社区
文档 意见反馈 控制台
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
林德熙
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
社区首页 > 专栏 > 林德熙的博客 > WPF 解决 ListView 的滚动条不显示

WPF 解决 ListView 的滚动条不显示

作者头像
林德熙
发布 于 2019-03-13 15:07:52
3.4K 0
发布 于 2019-03-13 15:07:52
举报

本文告诉大家如何解决一个诡异的问题,如果有一个 ListView 同时里面的元素的高度很长,但是滚动条就是不显示,怎么让这个滚动条显示

本文不属于小白博客,忽略所有的业务环境和样式问题以及对 ScrollViewer 的设置问题

在开始发现这个问题请先看 ListView 的滚动条,通过继承 ListView 或 ListBox 可以在 Load 事件拿到滚动条,需要判断 ScrollViewer 的 ExtentHeight 的大小

        private void ListBox_Loaded(object sender, RoutedEventArgs e)
            _scroll = this.VisualDescendant<ScrollViewer>();
        }

如果拿到的 _scroll 的 ExtentHeight 的大小相对预期小,则可以继续看本文的方法,如果有一些方法 Load 之后还没有设置数据可以等待设置数据之后通过 Dispatcher.InvokeAsync 的方法判断 ExtentHeight 的高度

如果这时高度太小,可能是因为 ItemsPresenter 没布局,尝试使用下面的代码解决

        protected override void OnItemsSourceChanged(IEnumerable oldValue, IEnumerable newValue)
            Dispatcher.InvokeAsync(() =>
                InvalidateMeasure();
                if (_scroll != null)
                    ItemsPresenter itemsPresenter = _scroll.Content as ItemsPresenter;
                    var size = new Size(double.PositiveInfinity, double.PositiveInfinity);
                    itemsPresenter?.Measure(size);
 
推荐文章
虚心的海龟  ·  第五届亞洲創新發明展覽會—香港 | 知識轉移及創業處
5 月前
跑龙套的手链  ·  2026年南方医科大学生物医学工程学位评定分委员会《807生物医学工程综合》考研全套 _ 高校图书馆
1 年前
风流倜傥的麦片  ·  Unsupported browser
1 年前
近视的茶壶  ·  如何使用铁锈中的env_logger机箱在IST时区打印日志?-腾讯云开发者社区-腾讯云
2 年前
豪气的弓箭  ·  部门动态_重庆市民族宗教事务委员会
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
小百科 - 百科知识指南
© 2024 ~ 沪ICP备11025650号