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

允许在内部水平滚动ScrollViewer内垂直滚动外部ScrollViewer

在WPF(Windows Presentation Foundation)中,可以使用ScrollViewer控件实现内部水平滚动和外部垂直滚动的效果。

ScrollViewer是一个可视化容器,它可以包含其他控件,并提供滚动功能。在这个问答中,我们需要实现在内部水平滚动的ScrollViewer中嵌套一个可以进行垂直滚动的外部ScrollViewer。

首先,我们需要在XAML中创建两个ScrollViewer控件,一个用于内部水平滚动,另一个用于外部垂直滚动。代码如下:

代码语言:txt
复制
<ScrollViewer HorizontalScrollBarVisibility="Auto">
    <ScrollViewer VerticalScrollBarVisibility="Auto">
        <!-- 在这里放置需要滚动的内容 -->
    </ScrollViewer>
</ScrollViewer>

在上述代码中,我们将内部ScrollViewer的HorizontalScrollBarVisibility属性设置为"Auto",以便在内容超出可见区域时显示水平滚动条。同时,将外部ScrollViewer的VerticalScrollBarVisibility属性设置为"Auto",以便在内容超出可见区域时显示垂直滚动条。

接下来,我们可以在内部ScrollViewer中放置需要滚动的内容,例如一些控件或者布局。这些内容可以是任何你想要滚动的内容,例如文本、图像、列表等等。

至于腾讯云相关产品和产品介绍链接地址,由于要求不能提及具体的云计算品牌商,我无法提供具体的链接。但是,腾讯云提供了丰富的云计算服务,包括云服务器、云数据库、云存储等等。你可以访问腾讯云的官方网站,了解更多关于这些产品的信息和使用方式。

总结起来,通过在WPF中使用两个嵌套的ScrollViewer控件,我们可以实现在内部水平滚动的ScrollViewer中嵌套一个可以进行垂直滚动的外部ScrollViewer的效果。这样可以方便地滚动大量内容,并提供更好的用户体验。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

WPF中WrapPanel、StackPanel等添加滚动ScrollViewer

ScrollViewer属性说明: VerticalScrollBarVisibility="Auto" // 设置垂直滚动条自动显示,只要内部控件的实际高度大于ScrollViewer的高度,就会自动显示垂直滚动条...HorizontalScrollBarVisibility="Auto" // 设置水平滚动条自动显示,只要内部控件的实际宽度大于ScrollViewer的宽度,就会自动显示水平滚动条。...问题:如果WrapPanel的HorizontalAlignment属性都设置为”Stretch”,那么就代表宽度可以无限大,这个时候就只会显示水平滚动条,垂直滚动条不生效。...2、StackPanel 内部控件垂直布局的Panel。 当子控件的宽度大于StackPanel的宽度,就会出现水平滚动条。 当子控件的高度大于StackPanel的高度,就会出现垂直滚动条。...> 当设置水平垂直滚动条都自动显示的时候,如果想显示垂直滚动条,则需要设置Width=”{Binding ElementName=scrList, Path=Width, Mode=OneWay}”,

4.9K20

win10 uwp 禁用 ScrollViewer 交互

如果在 UWP 有一个控件里面有 ScrollViewer 控件,那么因为默认的 ScrollViewer 会使用触摸的交互,这样在控件就收不到触摸的交互 通过 VerticalScrollMode="...ScrollViewer 滑动,先创建一个简单的 UWP 项目 打开 xaml 添加一点代码,创建一个 Canvas 放在 ScrollViewer ,在里面放一个矩形,通过这个矩形就可以知道有没有移动...> 创建的 ScrollViewer 只有对水平做滑动,尝试用触摸滑动矩形,会发现只能通过垂直滑动 如果想水平也可以滚动,需要设置 HorizontalScrollBarVisibility 属性,设置为...> 现在再试试触摸矩形 如果现在尝试拿到 滚动条外面的 Grid 的 Manipulation 事件,可以看到没被被调用 <Grid Background="Transparent" ManipulationMode...ManipulationDeltaRoutedEventArgs e) { } 这里需要设置 Grid 的背景和设置 ManipulationMode 可以水平垂直

78850

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

昨天星期八再娶你 大佬问我如何判断在滚动可以看到某个元素,他需要在滚动条里面放一个视频播放器,在用户看不到这个播放器的时候自动停下这个播放器 在 WPF 可以通过 ScrollChanged 拿到当前的滚动到哪同时拿到滚动条可见的宽度和高度...在 ScrollChangedEventArgs 提供了多个属性用于拿到当前的滚动条的可见的宽度和高度,滚动条的水平移动和垂直的移动,具体请看下图 在用户修改外层控件的宽度或高度让滚动条的高度或宽度进行修改的时候...等属性知道用户修改了多少 那么如果判断某个控件在滚动条可见就可以拿到某个控件的外接矩形和滚动条可见大小进行矩形判断,请看下图 那么如何拿到一个控件的外接矩形?...首先需要知道这个控件在外层的垂直水平偏移,也就是这个控件在外层控件的左上角坐标是多少,然后还需要知道这个控件的宽度和高度,这样就可以知道这个控件的外接矩形,拿到一个元素在外层控件的左上角坐标可以通过拿到这个控件的...,通过滚动条的水平垂直移动加上宽度和高度,请看代码 var viewBounds = new Rect(new Point(e.HorizontalOffset, e.VerticalOffset

90520

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

什么是滚动轮劫持 这篇文章介绍一个很简单的继承自ScrollViewer的控件: public class ExtendedScrollViewer : ScrollViewer { protected...实现 在WPF中要禁止ScrollViewer捕获鼠标滚动时间,可以重写OnMouseWheel成一个空的方法: protected override void OnMouseWheel(MouseWheelEventArgs...VerticalOffset,包含滚动内容对应于页首的垂直偏移量的值,有效值介于 0 与 ExtentHeight 减去 ViewportHeight 所得的数值之间。...其他ScrollViewer方案 ScrollViewer还有很多中玩法,但我工作中不常用到所以就没做。...如果觉得不满足还可以参考HandyControl的ScrollViewer,它直接提供了一个CanMouseWheel属性用于控制是否响应鼠标滚轮,另外还支持了滚动等功能。

1.2K30

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

在 UWP 中如何知道一个元素是在滚动条的显示大小用户可以看到这个控件?如果需要在控件在滚动条里面用户可以看到的时候触发某个事件,在用户看不到的时候触发另一个事件可以怎么做?...昨天星期八再娶你 大佬问我如何判断在滚动可以看到某个元素,他需要在滚动条里面放一个视频播放器,在用户看不到这个播放器的时候自动停下这个播放器 在 UWP 的判断会比在 WPF 中复杂一些,我写过WPF...如何判断一个控件在滚动条的里面是用户可见但是在 UWP 中的小伙伴,也就是做 UWP 的大佬对 API 的设计会更加诡异 在 UWP 没有 ScrollChanged 事件只有ScrollViewer.ViewChanged...在 ScrollViewer.ViewChanged 只有在用户滚动或缩放完成之后才会触发,同时这个事件的参数ScrollViewerViewChangedEventArgs 只有一个表示现在是用户交互的过程还是结束的变量...事件同时使用,这样就可以拿到用户滚动和修改大小 uwp - XAML ScrollViewer’s child bring into view event - Stack Overflow

91820

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

ScrollViewer里包含很多子控件时,默认情况下只能用鼠标手动拖动(或滚轮)滚动条以实现内容的滚动,假如用户是键盘高手,习惯于用Tab键来切换子控件焦点时,即使当前获得焦点的控件在不可见区域,滚动条也不会自动跟随着滚动到相应位置...= null) { ScrollViewer scrollViewer = sender as ScrollViewer;...scrollViewer.ScrollToVerticalOffset(GetVerticalOffset(element, scrollViewer)); }...处理方法,然后计算当前获取焦点的控件与ScorllViewer的偏移距离,最终得出滚动条应该滚动的偏移量。...上面这一段代码基本上能解决问题,但是有一个小小的不足:如果有3个输入框从上到下排着,且都在可视范围,这时如果用鼠标去点击其中一个不是当前获得焦点的输入框,也会触发以上代码,导致滚动条跳动一段距离,这个给用户的感觉好象界面总是在

1.2K60

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

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

15310

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

要知道如何实现 IScrollInfo,则需要明白 IScrollInfo 的设计原理:     如果 UIVPanel 元素自己要处理滚动信息,它必须知道当前滚动条的 OffSet,并告知 ScrollViewer...实现 IScrollInfo 的 UIVPanel 与 ScrollViewer 交互的细节如下: * ScollViewer 会在滚动条变更时,调用 UIVPanel 的 SetVerticalOffset...为了使用最外层 ScrollViewer 中的滚动条信息,它通过可视树往上查找到 DataGridRowsPresenter 来获取水平方向上的滚动条位置 HorizontalOffset,而通过这个值...,来计算水平方向上需要显示的单元格,以实现虚拟化。    ...最终的表格控件,经测试,给 20000 行数据,300列,都能在 0.5s 完成渲染: ?

2.7K70

WPF中的布局方式

VerticalAlignment="Bottom"> //width:为容器的宽度,height:为容器的高度 //HorizontalAlignment:水平对齐方式...,VerticalAlignment:垂直对齐方式 //Background:背景色 2.Grid:根据不可见的表格在行和列中排列元素 <Grid Width="100" Height="200...,WarpPanel面板从左向右放置条目,然后在随后的行中放置元素;在<em>垂直</em>方向上,WarpPanel面板在自上而下的列中放置元素,并使用附加的列放置剩余的条目: 我们用button按钮进行演示: <...5.StackPanel:和DockPanel类似都有拉伸作用: 默认情况下是<em>水平</em>拉伸,如果我们想<em>垂直</em>拉伸,可以加一下属性 Orientation="Horizontal" 6.ScrollViewer...:自定义滚动条样式容器,自带滚动条: 可以看到在右侧有一个白色的滚动条样式 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/159904.html原文链接

1.6K10

WPF 表格控件 ReoGrid 的简单使用

至于其它的表格样式调整,直接在 Excel 中调整即可(效果和源文件略有差异): 六、支持触摸滚动 到目前为止,在触摸屏下,是只支持触摸滚动条进行内容滚动的,直接在表格内容区进行触摸滚动是没有效果的。...这个应该是 WPF 的 ScrollViewer 本身的问题,之前碰到过,网上有人提供过一个方法来解决(通过附加属性)。...这里如果要支持表头固定,就要用控件自己添加的 ScrollViewer,也就不能直接用那个方法,所以我改了个专用的方法。...(WpfTouchScrollHelper 见 https://gitee.com/dlgcy/WPFTemplate) <ScrollViewer wpfHelpers:WpfTouchScrollHelper.IsEnabled...不过,也有缺点,因为滚动条也是在控件范围,所以有点受影响,不知道大家有没有什么好方法。

3.4K10

XAML中的响应式布局技术

以我的经验来说以下这些做法可以使UI有效应对分辨率改变: 使用相对定位代替决定定位 使用*和Auto代替具体尺寸(除了间距) 使用WrapPanel代替StackPanel 不要忘记使用ScrollViewer...而且和网页不同,WPF窗体默认没有提供ScrollViewer,所以千万不能忘记。在桌面客户端合理使用以上技术可以避免客户投诉。但UWP主打跨平台,它需要更先进(或者说,更激进)的技术。 2....MinWindowHeight未条件,根据页面宽度或高度进入设定好的不同状态(通常来说只使用MinWindowWidth,同时使用Height和Width做条件很容易产生混乱,而且大部分情况下响应式布局都会使用垂直滚动条所以对高度不关心...在下面的示例中StackPanel默认使用垂直排列,当页面的宽度超过720像素时改为水平排列。

2.3K10
领券