当前位置: 首页 > news >正文

佛山网站建设公司电话/培训机构管理系统哪个好

佛山网站建设公司电话,培训机构管理系统哪个好,如何整合wordpress博客,网站后台信息发布这样做WPF 列表虚拟化时的滚动方式 原文:WPF 列表虚拟化时的滚动方式ListBox的滚动方式 分为像素滚动和列表项滚动 通过ListBox的附加属性ScrollViewer.CanContentScroll来设置。因此ListBox的默认模板中&#xff0c;含有ScrollViewer&#xff0c;ScrollViewer下存放列表内容 <Scr…
WPF 列表虚拟化时的滚动方式
原文:WPF 列表虚拟化时的滚动方式

ListBox的滚动方式 分为像素滚动和列表项滚动

通过ListBox的附加属性ScrollViewer.CanContentScroll来设置。因此ListBox的默认模板中,含有ScrollViewer,ScrollViewer下存放列表内容

    <ScrollViewer FocusVisualStyle="{x:Null}"><ItemsPresenter SnapsToDevicePixels="{TemplateBinding UIElement.SnapsToDevicePixels}"/></ScrollViewer>

 而CanContentScroll,true支持逻辑单元(Item),false支持物理单元(像素)。源码如下:

    /// <summary>///   获取或设置一个值,该值指示是否支持元素 <see cref="T:System.Windows.Controls.Primitives.IScrollInfo" /> 接口允许滚动。/// </summary>/// <returns>///   <see langword="true" /> 如果 <see cref="T:System.Windows.Controls.ScrollViewer" /> 执行滚动操作使得在逻辑单元; 方面 <see langword="false" /> 如果 <see cref="T:System.Windows.Controls.ScrollViewer" /> 执行滚动操作使得在物理单元方面。///    默认值为 <see langword="false" />/// </returns>public bool CanContentScroll{get{return (bool) this.GetValue(ScrollViewer.CanContentScrollProperty);}set{this.SetValue(ScrollViewer.CanContentScrollProperty, value);}}

滚动

1、像素滚动(物理单元) ScrollViewer.CanContentScroll=false

通过查看源码,我们可以得知CanContentScroll的默认值为false。所以列表ListBox/ListView/DataGrid默认像素滚动

    /// <summary>///   标识 <see cref="P:System.Windows.Controls.ScrollViewer.CanContentScroll" /> 依赖属性。/// </summary>/// <returns>///   <see cref="P:System.Windows.Controls.ScrollViewer.CanContentScroll" /> 依赖项属性的标识符。/// </returns>
    [CommonDependencyProperty]public static readonly DependencyProperty CanContentScrollProperty = DependencyProperty.RegisterAttached(nameof (CanContentScroll), typeof (bool), typeof (ScrollViewer), (PropertyMetadata) new FrameworkPropertyMetadata(BooleanBoxes.FalseBox));
  [FriendAccessAllowed]internal static class BooleanBoxes{internal static object TrueBox = (object) true;internal static object FalseBox = (object) false;internal static object Box(bool value){if (value)return BooleanBoxes.TrueBox;return BooleanBoxes.FalseBox;}}

像素滚动的优点:平滑--因为按照像素滚动,肉眼分辨较低。

像素滚动的缺点:耗性能-列表中每个项,都要计算出宽高具体数值,且滚动时时计算。如果列表中数量过多,就相当卡了。

2、列表项滚动(逻辑单元) ScrollViewer.CanContentScroll="True"

按照Item高宽为滚动单位。

列表项滚动时,列表只会滚动到一个完整的Item,不会有一个Item只显示一半的情况。

 

虚拟化 

通过VirtualizingPanel,设置列表ListBox/ListView/DataGrid是否开启虚拟化

VirtualizingPanel其它属性有:

 VirtualizingPanel.ScrollUnit="Pixel"--虚拟化滚动单位(像素/单元)

VirtualizingPanel.IsVirtualizing="True" --是否虚拟

VirtualizingPanel.VirtualizationMode="Recycling"

 VirtualizingPanel.CacheLengthUnit="Item" --缓存单位

VirtualizingPanel.CacheLength="20,20"-上下缓存数量

 

开启虚拟化:为何需要设置ScrollViewer.CanContentScroll="True"?

开启虚拟化后,VirtualizingPanel.ScrollUnit会替换原有的ScrollViewer.CanContentScroll滚动方式

虚拟化也有物理单元与逻辑单元之分,滚动单元设置会转移到VirtualizingPanel.ScrollUnit

但是ScrollViewer.CanContentScroll="False"像素滚动,并不仅仅是滚动消耗性能。当数据很多时加载列表,即使开启了虚化化,因计算太耗性能,界面一样卡顿

有一个解决办法,设置ScrollViewer.CanContentScroll="True"后,在虚拟化设置中,可以设置虚拟化滚动单元VirtualizingPanel.ScrollUnit="Pixel",此即为虚拟化时的像素滚动。

 另:虚拟化时的列表项滚动,VirtualizingPanel.ScrollUnit="Item"列表项

 

注:

VirtualizingPanel.ScrollUnit和ScrollViewer.CanContentScroll的设置滚动单元一样。

设置虚拟单位为逻辑单元时,滚动时会自动滚动到一个完整的项,而不是滚动到项的部分。

因此当列表可见区域,Items数量或者高宽会变化时,列表滚动时会闪现。

 

列表正确开启虚拟化方式,请看我的另一博客:WPF 列表开启虚拟化的方式

posted on 2018-05-24 16:21 NET未来之路 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/lonelyxmas/p/9083523.html

http://www.lbrq.cn/news/2176021.html

相关文章:

  • 著名网站建设公司/app网站推广平台
  • 一个公司可以做几个网站/百度竞价托管运营
  • 黄岛做网站找哪家好/百度排名点击软件
  • 网站做用户记录表/百度搜索关键词指数
  • 公司网站一般是怎么做/有什么平台可以发广告
  • 海北公司网站建设哪家快/2020 惠州seo服务
  • 营销网站设计包括/宁波网络推广公司有哪些
  • 校园网站建设年度总结/合肥百度关键词优化
  • 百度收录删除旧网站/鸡西seo
  • 武威网站建设公司有/武汉网络推广平台
  • 国内做设计的网站/网络营销服务的内容
  • 天河公司网站建设公司/网站外链代发
  • 网站建设实施方案ppt/搜索排名优化策划
  • 如何做区块链网站/百度网站ip地址
  • 江苏网站建设效果/长春网站建设方案咨询
  • 阿里巴巴做短视频网站/免费大数据分析网站
  • 网站开发建设项目服务清单/100%能上热门的文案
  • 2010年最具人气的平面设计师必备网站/推广手段和渠道有哪些
  • 外卖做的比较好的网站/外链平台
  • 医学院英文网站建设方案/百度营业执照怎么办理
  • 服务器 网站 搬家/怎么弄一个自己的网站
  • 加强纪检监察网站建设/全球网络营销公司排名
  • 胶州网站建设/咨询网络服务商
  • 网页传奇变态版游戏/网站优化排名易下拉系统
  • 丽水网站制作公司/宁波网站优化公司价格
  • 网站推广托管/网络营销的优势是什么
  • 惠州模板网站/网络营销包括
  • 网上购物商城网站/百度有哪些产品
  • 网站默认模板/湖南手机版建站系统开发
  • 做外贸接私单的网站/微信公众号推广2元一个
  • 工业网络协议桥接设计指南:从LIN到CAN/RS-232的毫秒级互通方案
  • 从函数调用到进程通信:Linux下的多语言协作实践
  • 在 CentOS 8 上彻底卸载 Kubernetes(k8s)
  • k8s之Attach 和 Mount
  • MIPI DSI(四) video 和 command 模式
  • 运维技术教程之Jenkins的秘钥设置