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

win10 uwp 禁用 ScrollViewer 交互

如果在 UWP 有一个控件里面有 ScrollViewer 控件,那么因为默认 ScrollViewer 会使用触摸交互,这样在控件就收不到触摸交互 通过 VerticalScrollMode="...Disabled" HorizontalScrollMode="Disabled" 可以关闭 ScrollViewer 交互 接下来就是简单告诉大家如何使用 ScrollViewer禁用默认交互还让...> 现在再试试触摸矩形 如果现在尝试拿到 滚动条外面的 Grid Manipulation 事件,可以看到没被被调用 <Grid Background="Transparent" ManipulationMode...ManipulationMode 可以水平或垂直,设置 Grid 背景是让 Grid 有命中测试,这样 UWP 才知道用户点击到哪个控件,通过 ManipulationMode 才可以让事件知道可以如何做...欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接: https://lindexi.gitee.io ),不得用于商业目的,基于本文修改后作品务必以相同许可发布。

77650

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

在 UWP 中如何知道一个元素是在滚动条显示大小内用户可以看到这个控件?如果需要在控件滚动条里面用户可以看到时候触发某个事件,在用户看不到时候触发另一个事件可以怎么做?...昨天星期八再娶你 大佬问我如何判断在滚动条内可以看到某个元素,他需要在滚动条里面放一个视频播放器,在用户看不到这个播放器时候自动停下这个播放器 在 UWP 判断会比在 WPF 中复杂一些,我写过WPF...如何判断一个控件滚动条里面是用户可见但是在 UWP 中小伙伴,也就是做 UWP 大佬对 API 设计会更加诡异 在 UWP 没有 ScrollChanged 事件只有ScrollViewer.ViewChanged...事件,但是这个事件和 WPF 触发不相同在于,如果我有外层控件修改了滚动条大小,不会触发这个事件。...在LayoutUpdated可以在控件第一次加载时候触发,可以在用户滚动时候触发 在 LayoutUpdated 通过判断控件左上角坐标和控件大小可以判断用户是否可以看到这个控件 在 UWP

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

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

ScrollViewer包含很多子控件时,默认情况下只能用鼠标手动拖动(或滚轮)滚动条以实现内容滚动,假如用户是键盘高手,习惯于用Tab键来切换子控件焦点时,即使当前获得焦点控件在不可见区域,滚动条也不会自动跟随着滚动到相应位置...0 : newOffset; // no use returning negative offset }   即:给ScrollViewerGotFocus事件增加_ScrollViewer_GotFocus...处理方法,然后计算当前获取焦点控件与ScorllViewer偏移距离,最终得出滚动条应该滚动偏移量。...上面这一段代码基本上能解决问题,但是有一个小小不足:如果有3个输入框从上到下排着,且都在可视范围内,这时如果用鼠标去点击其中一个不是当前获得焦点输入框,也会触发以上代码,导致滚动条跳动一段距离,这个给用户感觉好象界面总是在...静下来细想一下:其实我们本意是要解决用户按TAB键问题,只要在KeyDown或KeyUP事件里处理就行了,没必要在GetFocus时处理,于是有了下面的改进版: <UserControl x:Class

1.2K60

WPF 表格控件 ReoGrid 简单使用

效果如下: 可以看到固定了表头后还是会有表头线突出,这是因为窗体(或者说显示范围)比表格内容区域大,实际使用时可通过设置合适显示大小,ReoGrid 控件会自动出现滚动条,即可解决这个问题(3.0.0...版本不行),如下所示: 可以看到,滚动条滑到最边上,并没有空白出现,也就看不到突出表头线了。...这个应该是 WPF ScrollViewer 本身问题,之前碰到过,网上有人提供过一个方法来解决(通过附加属性)。...这里如果要支持表头固定,就要用控件自己添加 ScrollViewer,也就不能直接用那个方法,所以我改了个专用方法。...不过,也有缺点,因为滚动条也是在控件范围内,所以有点受影响,不知道大家有没有什么好方法。

3.3K10

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

什么是滚动轮劫持 这篇文章介绍一个很简单继承自ScrollViewer控件: public class ExtendedScrollViewer : ScrollViewer { protected...这个情况相信很多人都遇到过,滚轮被“劫持”后索性去拖动滚动条。...当然我们不满足于无脑禁用鼠标滚轮,我们应该更智能些,先让ScrollViewer滚到底,再交由外层ScrollViewer滚下去。...这里面用到几个属性: MouseWheelEventArgs中Delta表示鼠标滚轮变更量,当这个值为正数时表示滚轮向上。 ExtentHeight,获取ScrollViewer内容实际高度。...VerticalOffset,包含滚动内容对应于页首垂直偏移量值,有效值介于 0 与 ExtentHeight 减去 ViewportHeight 所得数值之间。

1.2K30

WPF中WrapPanel、StackPanel等添加滚动条ScrollViewer

因为在wpf中,想要显示滚动条,需要把控件放在滚动条视图控件(ScrollViewer)中。...ScrollViewer属性说明: VerticalScrollBarVisibility="Auto" // 设置垂直滚动条自动显示,只要内部控件实际高度大于ScrollViewer高度,就会自动显示垂直滚动条...HorizontalScrollBarVisibility="Auto" // 设置水平滚动条自动显示,只要内部控件实际宽度大于ScrollViewer宽度,就会自动显示水平滚动条。...,这个时候依赖于ScrollViewer控件宽度。...2、StackPanel 内部控件垂直布局Panel。 当子控件宽度大于StackPanel宽度,就会出现水平滚动条。 当子控件高度大于StackPanel高度,就会出现垂直滚动条

4.6K20

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

我有一个控件,这个控件放在滚动条里面,如果在滚动条滚动到这个控件可以被用户看见时候,我能知道这个事件,或从什么时机可以拿到用户可以看见范围修改?...在 ScrollChangedEventArgs 提供了多个属性用于拿到当前滚动条可见宽度和高度,滚动条水平移动和垂直移动,具体请看下图 在用户修改外层控件宽度或高度让滚动条高度或宽度进行修改时候...,可以从 ViewportWidthChange 和 ViewportHeightChange 属性知道滚动条可视宽度和高度修改了多少 在用户修改滚动条里面的控件宽度或高度时候,可以从 ExtentWidthChange...等属性知道用户修改了多少 那么如果判断某个控件滚动条可见内就可以拿到某个控件外接矩形和滚动条可见大小进行矩形判断,请看下图 那么如何拿到一个控件外接矩形?...// 控件宽度和高度 var controlBounds = new Rect(top, control.DesiredSize); 此时计算滚动条用户可见大小,通过滚动条水平和垂直移动加上宽度和高度

89420

【愚公系列】2023年09月 WPF控件专题 ListBox控件详解

这些控件都是WPF中常见标准用户界面元素。 自定义控件则允许开发人员使用XAML和C#等编程语言来创建个性化用户界面元素。自定义控件可以根据需求提供更多功能和自定义化选项,以及更好用户体验。...ScrollViewer.HorizontalScrollBarVisibility和ScrollViewer.VerticalScrollBarVisibility:用于设置ListBox中滚动条可见性...ItemTemplate:指定ListBox中每个项展示模板。 IsSynchronizedWithCurrentItem:指示ListBox是否跟踪其所包含集合中当前项位置。...ScrollViewer.HorizontalScrollBarVisibility:指定水平滚动条显示方式。...ScrollViewer.VerticalScrollBarVisibility:指定垂直滚动条显示方式。

60200

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

要知道如何实现 IScrollInfo,则需要明白 IScrollInfo 设计原理:     如果 UIVPanel 元素自己要处理滚动信息,它必须知道当前滚动条 OffSet,并告知 ScrollViewer...实现 IScrollInfo UIVPanel 与 ScrollViewer 交互细节如下: * ScollViewer 会在滚动条变更时,调用 UIVPanel SetVerticalOffset...虚拟化会把整个列表分割成多个小块,这些小块主要是两类:UnrealizedItemBlock(未实例化块)、RealizedItemBlock(实例化块)。...为了使用最外层 ScrollViewer滚动条信息,它通过可视树往上查找到 DataGridRowsPresenter 来获取水平方向上滚动条位置 HorizontalOffset,而通过这个值...这导致了当每一行高不统一时,竖向滚动条会计算出错,造成很差用户体验。

2.7K70

New UWP Community Toolkit - AdaptiveGridView

概述 UWP Community Toolkit  中有一个自适应 GridView 控件 - AdaptiveGridView,本篇我们结合代码详细讲解  AdaptiveGridView 实现。...AdaptiveGridView 控件能够以均匀分组方式,让一组列填充整个显示空间,它可以对布局和内容变化做出反应,以便自动适应不同外观。我们来看一下官方示例展示: ?...- 内容知否已经拉伸去填充一行,布尔值  另外类中还有一个方法 CalculateColumns(containerWidth, itemWidth), 根据容器宽度和元素宽度,确定控件应该包含几列,...;当单行时,把 MaxHeight 属性设置为 ItemHeight,Orientation 设为纵向,滚动设置包括纵向滚动禁止,隐藏滚动条,横向滚动可用;如果为多行模式,则根据保存 Orientation...总结 到这里我们就把 UWP Community Toolkit 中 AdaptiveGridView 控件源代码实现过程和简单调用示例讲解完成了,希望能对大家更好理解和使用这个控件有所帮助。

1.4K70

CaseStudy(showcase)布局篇-列表排放与遮罩

如果需要设置间距,那就在它控件设置。 重点说一下对StackPanel遮罩。 这个做遮罩首先先把StackPanel组合到一个Canvas中。然后在canvas上画一个矩形。...这样做事为了以后做滚动条方便。 下边分别对各个布局控件进行介绍。 Canvas Canvas是一个绝对定位组件,它以左上角为定点进行定位。 ?...它可以是一个空,为动态加载控件做占位实用。不过它内部只能包含一个控件。 StatckPanel 其可以横行或纵向对子控件进行排列。...ScrollViewer控件允许其子控件大小大于其本身大小。在大于其自身情况下出现滚动条进行控制显示区域。...Grid 这个控件是最复杂,其可以设置行和列,尺寸(宽高)其设置分为三种 Auto,自适应子控件 InPixel,固定宽高 *,按百分比分配 <Grid Height="278"

69890

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

引言 上一篇中 WPF --- 重写圆角DataGrid样式,因新产品UI需要,重写了一下微软 「WPF」 原生 DataGrid 样式,包含如下内容: 基础设置,一些基本背景色,字体颜色等。...重写过程中,遇到了两个问题: 如何获取 「WPF」 原生 DataGrid 样式? 滚动条样式中,如何固定滚动条长度? 本篇文章分享一下这两个问题解决办法。...ToggleButton IsChecked 为true时,展开其内容,它内容就是 ScrollViewer,就是我们看到下拉弹出内容了。...问题2 第二个问题, 滚动条样式中,如何固定滚动条长度? 在原生滚动条样式中,纵方向上滚动条高度是跟随你窗口大小和内容多少而改变,窗口大内容少,滚动条高度就越大,反之亦然。...小结 Blend 本身就是一个专业级界面设计工具,可以大大提高我们创建丰富、交互式用户界面(UI)和用户体验(UX)设计效率。

32820

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

本文主要讲如何保存我们屏幕显示控件,保存为图片。这个也就是截图,截我们应用显示,我们应用之外不截图。...,不过上面代码使用 dpi 不是 96 可能在不同用户保存图片不同。...不过因为他截图图片 像素本来就不是和其他用户相同,所以使用这个方式保存是可以。 我们在Grid放一个Image,然后可以看到,我们原图 ? ?... 截图之后可以看到结果没影响 那么我们要显示我们图片显示全,我们可以借用一个简单控件 <ScrollViewer...我们可以在滚动条写大小为很小,但是Width="1"就出错,我们不需要把他放在用户可视,也就是放在最底层也是可以 水印 UWP图片水印简单,我们需要一个Image和一个水印,水印在图片Zindex比他大

1.3K10

win10 uwp 在 Grid 接收键盘消息

,在获取焦点方法里面有设置当前获取是什么焦点,可以选有 Pointer 焦点相当于鼠标焦点,和键盘焦点逻辑焦点。...,所以可以让 Grid 在点击时候设置 Grid 里面的控件焦点,这样在 Grid 里面的控件收到键盘事件时,可以通过路由事件让 Grid 收到键盘事件 定义一个空白 Control 类,这个类主要是收到焦点...Grid 里面放这个控件 <Grid x:Name="Grid2" Margin="10,10,10,10" Width="100" Background="#565656" HorizontalAlignment...原因是在鼠标点击时,不仅会让 Grid 拿到鼠标焦点,此时焦点将会在窗口 ScrollViewer 也就是在 UWP 中窗口滚动条里面,此时键盘焦点也不再 Grid 里面。...如果在点击时设置焦点在 Foo 那么在鼠标抬起时,将会路由到上层 ScrollViewer 也就是在 ScrollViewer 拿到焦点。

74420

WPF --- 触摸屏下两个问题

场景 具体场景就是一个配置界面, ScrollViewer包含一个StackPanel 然后纵向堆叠,以滚动方式查看,然后包含多个 TextBlock 、 TextBox 以及DataGrid ,...期间遇到了两个问题: WPF在触摸屏下,如果有滚动条ScrollViewer情况下,默认包含触底反馈功能,就是触摸屏滑动到底或从底滑到顶,界面都会出现抖动情况。...大概像这样: 解决方案 触底反馈抖动问题 先来看第一个问题,这个其实是由于 ManipulationBoundaryFeedback 这个事件引起: 最简单做法,就是在对应包含ScrollViewer...触点在DataGrid中无法滚动问题 这个问题,其实不光在 DataGrid中有,触点在 TextBox 、ListView、ListBox,这一类内置有 ScrollViewer 控件内,都有同样问题...我处理这个问题时候,是先处理鼠标滑轮无法滚动,处理方案就是根据鼠标的偏移量,手动设置 ScrollViewer 位置,如下: private void DataGrid_MouseWheel(object

13610

WPF 解决 ListView 滚动条不显示

本文告诉大家如何解决一个诡异问题,如果有一个 ListView 同时里面的元素高度很长,但是滚动条就是不显示,怎么让这个滚动条显示 本文不属于小白博客,忽略所有的业务环境和样式问题以及对 ScrollViewer...设置问题 在开始发现这个问题请先看 ListView 滚动条,通过继承 ListView 或 ListBox 可以在 Load 事件拿到滚动条,需要判断 ScrollViewer ExtentHeight...OnItemsSourceChanged 重写这个类都是在用户设置数据,在用户设置数据时候,通过 Dispatcher.InvokeAsync 重新计算,这样就可以解决滚动条不显示 这样原理是滚动条是否出现是通过判断...同时宽度是 this.ExtentWidth - this.ViewportWidth 判断 这里 ExtentHeight 会收到用户滚动条一个设置 CanContentScroll 修改,...欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接: https://lindexi.gitee.io ),不得用于商业目的,基于本文修改后作品务必以相同许可发布。

4K30

WPF中布局方式

前言:WPF(Windows Presentation Foundation)是微软推出基于Windows 用户界面框架,属于.NET Framework 3.0一部分。...它提供了统一编程模型、语言和框架,真正做到了分离界面设计人员与开发人员工作;同时它提供了全新多媒体交互用户图形界面 WPF布局规则:wpf窗口只能包含单个元素,为在wpf窗口中放置多个元素,需要添加容器然后向容器中放置元素...,当WrapPanel自身宽高发生改变时对其中元素布局也会有影响,如下图:当宽度变窄时其会自动调节其中元素布局方式 4.DockPanel:沿着一条外边缘来拉伸所包含控件,也就类似于许多窗口顶部工具栏...5.StackPanel:和DockPanel类似都有拉伸作用: 默认情况下是水平拉伸,如果我们想垂直拉伸,可以加一下属性 Orientation="Horizontal" 6.ScrollViewer...:自定义滚动条样式容器,自带滚动条: 可以看到在右侧有一个白色滚动条样式 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/159904.html原文链接

1.6K10

WPF 已知问题 开启 IsManipulationEnabled 之后触摸长按 RepeatButton 不会触发连续 Click 事件

或 RepeatButton 所在上层容器控件里面设置 IsManipulationEnabled 都能复现 RepeatButton 在触摸长按时无法收到源源不断 Click 事件 在 ListBox...里面实际上隐藏了包含 IsManipulationEnabled 为 true ScrollViewer 控件,只需将其 IsManipulationEnabled 属性设置为 false 就能继续让...接下来测试将 ListBox 里面的 ScrollViewer 控件 IsManipulationEnabled 属性设置为 false 后对 RepeatButton 触摸长按,修改代码如下...控件,将其 IsManipulationEnabled 属性设置为 false 从而让 RepeatButton 不再放入到任何包含 IsManipulationEnabled 为 true 容器内...,运行代码,此时可以看到放入到 ListBox RepeatButton 能够在触摸长按时不断收到 Click 事件 由于此问题是 WPF 层为了实现触摸下漫游,从而禁用了提升鼠标,我阅读了代码发现除非来一次重构否则怎么修都是打补丁

11810

Blend基础-布局控件

Panels控件(其实就是容器控件) 对内部控件提供了自动布局功能 可以在容器控件内继续添加容器控件(一个复杂界面往往是多种容器控件嵌套而组成) 一些界面器控件也是嵌套了容器控件而组成(比如ListBox...就嵌套了StackPanel控件) 你也可以自己来制作一些容器控件 一些常见布局控件 Canvas 最原始容器控件,对子控件无自动布局功能。...StackPanel 能将子元素排列成一行(可沿水平或者垂直方向) WarpPanel 元素从左到右按顺序排列,在包含他们边缘处将内容换至下一行。 Grid 定义由行和列灵活网格区域。...Border 在一个子元素周围绘制边框、背景。 DockPanel 可将子元素沿其边缘进行定位。 ScrollViewer 使内容显示在比其实际大小小区域中,并适当显示滚动条。...在右侧工具栏中你可以找到更多布局控件。 或者你知道自己想要控件 直接输入他名字便可以快速找到他。

1K60
领券