首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

OEA 中 WPF 树型表格虚拟化设计方案

要知道如何实现 IScrollInfo,则需要明白 IScrollInfo 设计原理:     如果 UIVPanel 元素自己要处理滚动信息,它必须知道当前滚动条 OffSet,并告知 ScrollViewer...那么,在这样层次要求下,要如何实现只使用一个滚动条虚拟化呢?还好,WPF 自带 DataGrid 也带有行列虚拟化功能,我们可以先看一下 DataGrid 是如何实现。...为了使用最外层 ScrollViewer滚动条信息,它通过可视树往上查找到 DataGridRowsPresenter 来获取水平方向上滚动条位置 HorizontalOffset,通过这个值...VirtualizingStackPanel 为了提高性能,它是根据 Item (项数)不是 Pixel (象素)来计算滚动条信息。...表格行 TreeGridRow 类则继承自 HeaderedItemsControl 类型,它总行高应该是本行高度加上所有子行高度,也不是一个定值,所以现在虚拟化功能也被关闭。

2.7K70

win10 uwp 如何判断一个控件在滚动条里面是用户可见

在 UWP 中如何知道一个元素是在滚动条显示大小内用户可以看到这个控件?如果需要在控件在滚动条里面用户可以看到时候触发某个事件,在用户看不到时候触发另一个事件可以怎么做?...昨天星期八再娶你 大佬问我如何判断在滚动条内可以看到某个元素,他需要在滚动条里面放一个视频播放器,在用户看不到这个播放器时候自动停下这个播放器 在 UWP 判断会比在 WPF 中复杂一些,我写过WPF...如何判断一个控件在滚动条里面是用户可见但是在 UWP 中小伙伴,也就是做 UWP 大佬对 API 设计会更加诡异 在 UWP 没有 ScrollChanged 事件只有ScrollViewer.ViewChanged...事件,但是这个事件和 WPF 触发不相同在于,如果我有外层控件修改了滚动条大小,不会触发这个事件。...,此时事件很难做到精确拿到滚动条的当前大小和移动距离 var viewBounds = new Rect(new Point(ScrollViewer.HorizontalOffset, ScrollViewer.VerticalOffset

90820
您找到你想要的搜索结果了吗?
是的
没有找到

如何成为有创意设计师,不是艺术家?

有时设计做很好,用户使用时很难发现设计哪儿不对,因为他们设计形式你只注意到如何去使用它们,不是观察他们设计得如何美观。...设计创造性并不是为了推动事物试图突破边界,也不是为了与众不同改变事物风格。...许多人可能会认为这些精心设计产品“缺乏创造力”,但其他人会指出并解释这些相似性如何使设计对象实现其预期目标。 研究一再表明,为了改变事物改变事物是如何损害设计对象。...或者,如果你正在做事情是有用,但不是独一无二,那也只是“现状”。“设计可以轻松地陷入一种现状,因为目的是解决问题,问题本身通常是工作中创造力,不是执行力。”...类似地,应用程序“Clear”使用了滑动手势,让管理待办事项列表变得远比点击按钮来设置提醒、将任务标记为已完成或完全删除等操作简单得多。

45720

如何优雅在SpringBoot中编写选择分支,不是大量if else?

一、需求背景 部门通常指的是在一个组织或企业中组成若干人员,他们共同从事某一特定工作,完成共同任务和目标。...部门编号是公司或组织内部对不同职能部门标识符号,通常采用数字、字母或其组合形式来进行表示。部门编号作用在于方便管理者对各个部门进行辨识和分类,同时也有利于人力资源管理和工作流程优化。...部门编号通常由公司或组织管理人员根据实际情况进行规划和安排,各个部门编号应当具有独立性、唯一性和易于记忆等特点,以方便在日常管理活动中使用。...但在开发过程中,如果不建立数据表,则需要用选择结构进行判断赋值,所以就产生了大量 if-else 代码。 本文目标,就是消除这些 if-else 代码,用更高级方法来实现!...同学们在开发自己商业订单时,可以采取这个方案来处理大量选择逻辑。

16320

Silverlight:ScorllViewer随Tab键自动跟随子控件Focus滚动

ScrollViewer里包含很多子控件时,默认情况下只能用鼠标手动拖动(或滚轮)滚动条以实现内容滚动,假如用户是键盘高手,习惯于用Tab键来切换子控件焦点时,即使当前获得焦点控件在不可见区域,滚动条也不会自动跟随着滚动到相应位置...,这个非常不方便,今天在网上看到一个老外解决办法,代码转贴于此: private void _ScrollViewer_GotFocus(object sender, RoutedEventArgs...0 : newOffset; // no use returning negative offset }   即:给ScrollViewerGotFocus事件增加_ScrollViewer_GotFocus...处理方法,然后计算当前获取焦点控件与ScorllViewer偏移距离,最终得出滚动条应该滚动偏移量。...上面这一段代码基本上能解决问题,但是有一个小小不足:如果有3个输入框从上到下排着,且都在可视范围内,这时如果用鼠标去点击其中一个不是当前获得焦点输入框,也会触发以上代码,导致滚动条跳动一段距离,这个给用户感觉好象界面总是在

1.2K60

如何差异化您物联网产品:提供见解不是数据

在这篇文章中,我描述了拥有数据策略重要性,并分享了我是如何艰难地发现这一点。 你数据策略是什么? 归根结底,物联网产品与客户心目中任何其他产品都没有什么不同。它要么带来价值,要么没有价值。...因为公司在构建物联网产品时面临最大挑战之一是制定数据战略 - 如何从数据中获取价值计划。 数据策略超越了数据收集和管理。...始终用数据策略来引领 我们应该更好地理解客户最终目标,不是仅仅交付他们在这个定制解决方案中所要求东西。 别误会,从我公司角度来看,这次部署是成功。...公司太过关注于解决问题症状,不是深入了解客户真正想要实现目标。更常见情况是,我们把重点放在提供数据上,不是提供真知灼见。...当您成为您客户及其同行所面临挑战专家时,您可以提出更好问题并为您产品做出更好决策,从而为您客户提供更多价值。 总结:提供见解 如今,许多物联网产品关注是生成数据,不是真知灼见。

55600

WPF 解决 ListView 滚动条不显示

本文告诉大家如何解决一个诡异问题,如果有一个 ListView 同时里面的元素高度很长,但是滚动条就是不显示,怎么让这个滚动条显示 本文不属于小白博客,忽略所有的业务环境和样式问题以及对 ScrollViewer...设置问题 在开始发现这个问题请先看 ListView 滚动条,通过继承 ListView 或 ListBox 可以在 Load 事件拿到滚动条,需要判断 ScrollViewer ExtentHeight...= this.VisualDescendant(); } 如果拿到 _scroll ExtentHeight 大小相对预期小,则可以继续看本文方法...OnItemsSourceChanged 重写这个类都是在用户设置数据,在用户设置数据时候,通过 Dispatcher.InvokeAsync 重新计算,这样就可以解决滚动条不显示 这样原理是滚动条是否出现是通过判断...同时宽度是 this.ExtentWidth - this.ViewportWidth 判断 这里 ExtentHeight 会收到用户滚动条一个设置 CanContentScroll 修改,

3.9K30

去解决更多问题,不是如何最好地解决一个问题

有些人非常勤奋,别人休息和娱乐时候,都在工作学习。但是努力了一辈子,人生也没有显著提升,就像报道里经常说:"某某在平凡岗位上,勤勤恳恳工作了一辈子"。...如果这样,不是所有人都走上巅峰了吗?没有人开始不努力,为什么后来不努力,因为努力没有效果。"...人生不是走斜坡,你持续走就可以走到巅峰;人生像走阶梯,每一阶有每一阶难点,学物理有物理难点,学漫画有漫画难点,你没有克服难点,再怎么努力都是原地跳。所以当你克服难点,你跳上去就不会下来了。...成功的人生是台阶式向上,不是一条水平线。努力只是说明你拼命在走,跟你能不能向上走,关系不大。那些努力却没有结果的人,根本原因就在于,他一直走在平面上,没有走到更高台阶。...对你更重要是,要去解决更多问题,不是如何最好地解决一个问题。 只有通过解决更多问题,人生才能摆脱水平运动,进入上升运动。

70740

WPF 开启 ScrollViewer 触摸滚动

ScrollViewer 如果需要收到触摸消息,通过 Manipulation 触摸滚动,不能只是通过设置 IsManipulationEnabled 方法,还需要设置 PanningMode 才可以...那么如何知道滚动条触摸事件是否触发,可以写一个类继承滚动条 public class StisvearpaHudalserevow : ScrollViewer {...base.OnManipulationStarted(e); } } 在界面添加这个类,如果有触摸输入就可以通过输出看到了,简单一个界面,可以看到默认滚动条是不能滚动...同时触摸时候没有输出 尝试添加 IsManipulationEnabled 方法 可以看到有输出但是就是不能滚动 在我博客 WPF 拖动滚动 告诉大家通过 PanningMode 方法可以让滚动条滚动 只要在初始过程设置了 PanningMode 因为在代码里面通过 InvalidateProperty

80110

WPF 如何判断一个控件在滚动条里面是用户可见

昨天星期八再娶你 大佬问我如何判断在滚动条内可以看到某个元素,他需要在滚动条里面放一个视频播放器,在用户看不到这个播放器时候自动停下这个播放器 在 WPF 可以通过 ScrollChanged 拿到当前滚动到哪同时拿到滚动条可见宽度和高度...在 ScrollChangedEventArgs 提供了多个属性用于拿到当前滚动条可见宽度和高度,滚动条水平移动和垂直移动,具体请看下图 在用户修改外层控件宽度或高度让滚动条高度或宽度进行修改时候...等属性知道用户修改了多少 那么如果判断某个控件在滚动条可见内就可以拿到某个控件外接矩形和滚动条可见大小进行矩形判断,请看下图 那么如何拿到一个控件外接矩形?...我在滚动添加了一个控件,在里面添加了很多文本,其中有一个是歪楼文本 我需要在歪楼文本被用户看到时候输出,于是我就在后台代码通过本文上面提供方法拿到这个元素矩形判断 private void ScrollViewer_OnScrollChanged

88620

WPF 开启 ScrollViewer 触摸滚动

ScrollViewer 如果需要收到触摸消息,通过 Manipulation 触摸滚动,不能只是通过设置 IsManipulationEnabled 方法,还需要设置 PanningMode 才可以...那么如何知道滚动条触摸事件是否触发,可以写一个类继承滚动条 public class StisvearpaHudalserevow : ScrollViewer {...base.OnManipulationStarted(e); } } 在界面添加这个类,如果有触摸输入就可以通过输出看到了,简单一个界面,可以看到默认滚动条是不能滚动...可以看到有输出但是就是不能滚动 在我博客 WPF 拖动滚动 告诉大家通过 PanningMode 方法可以让滚动条滚动 只要在初始过程设置了 PanningMode 因为在代码里面通过 InvalidateProperty...OnManipulationCompleted 同时触发之后也没有触摸 ---- 本文会经常更新,请阅读原文: https://lindexi.gitee.io/post/WPF-%E5%BC%80%E5%90%AF-ScrollViewer

3.3K20

WPF --- 如何重写WPF原生控件样式?

重写过程中,遇到了两个问题: 如何获取 「WPF」 原生 DataGrid 样式? 滚动条样式中,如何固定滚动条长度? 本篇文章分享一下这两个问题解决办法。...解决方法 我来分别分享一下我遇到这两个问题。 问题1 第一个,如何获取 「WPF」 原生 DataGrid 样式?...ToggleButton IsChecked 为true时,展开其内容,它内容就是 ScrollViewer,就是我们看到下拉弹出内容了。...问题2 第二个问题, 滚动条样式中,如何固定滚动条长度? 在原生滚动条样式中,纵方向上滚动条高度是跟随你窗口大小和内容多少改变,窗口大内容少,滚动条高度就越大,反之亦然。...通过 Blend 获取原生样式,阅读原生样式,非常有利于理解控件设计,在此基础上进行修改,美化也是能够事半功倍,强烈建议大家学会。

29420

win10 uwp 截图 获取屏幕显示界面保存图片 水印

本文主要讲如何保存我们屏幕显示控件,保存为图片。这个也就是截图,截我们应用显示,我们应用之外不截图。...,不过上面代码使用 dpi 不是 96 可能在不同用户保存图片不同。...不过因为他截图图片 像素本来就不是和其他用户相同,所以使用这个方式保存是可以。 我们在Grid放一个Image,然后可以看到,我们原图 ? ?...我们把图片一部分不显示,截图下来看下不显示不是就不会在图片。...p=1257 因为保存图片比较大,我在找压缩图片算法,找到了这个博客 用C#开发一个WinForm版批量图片压缩工具 - CSDN博客 还有 GDI+ 如何将图片绘制成圆形图片 - CSDN博客

1.2K10

关于ScrollViewr和滚动轮劫持(scroll-wheel-hijack)

什么是滚动轮劫持 这篇文章介绍一个很简单继承自ScrollViewer控件: public class ExtendedScrollViewer : ScrollViewer { protected...所谓滚动轮劫持,简单来说即是在一个可以滚动页面使用鼠标滚轮滚动页面的过程中鼠标进入某个可以滚动子元素导致只在这个子元素中滚动整个页面想滚滚不动了。 具体看看这个例子: ?...这个情况相信很多人都遇到过,滚轮被“劫持”后索性去拖动滚动条。...当然我们不满足于无脑禁用鼠标滚轮,我们应该更智能些,先让ScrollViewer滚到底,再交由外层ScrollViewer滚下去。...>= 0) return; 当鼠标向下滚动时,需要根据ViewportHeight、VerticalOffset和ExtentHeight判断当前是否已经滚动到底,如果是就不处理鼠标滚轮事件

1.2K30

win10 uwp 禁用 ScrollViewer 交互

如果在 UWP 有一个控件里面有 ScrollViewer 控件,那么因为默认 ScrollViewer 会使用触摸交互,这样在控件就收不到触摸交互 通过 VerticalScrollMode="...Disabled" HorizontalScrollMode="Disabled" 可以关闭 ScrollViewer 交互 接下来就是简单告诉大家如何使用 ScrollViewer 在禁用默认交互还让...> 现在再试试触摸矩形 如果现在尝试拿到 滚动条外面的 Grid Manipulation 事件,可以看到没被被调用 <Grid Background="Transparent" ManipulationMode...ManipulationMode 可以水平或垂直,设置 Grid 背景是让 Grid 有命中测试,这样 UWP 才知道用户点击到哪个控件,通过 ManipulationMode 才可以让事件知道可以如何做...那么如何让 Grid 接收到 Manipulation 或者 Pointer 事件?

77350
领券