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

WPF中WrapPanel、StackPanel等添加滚动条ScrollViewerwpf中,在控件中直接设置ScrollViewer.HorizontalScrollBarVisibility和ScrollViewer.VerticalScrollBarVisibility属性,并不能显示滚动条。因为在wpf中,想要显示滚动条,需要把控件放在滚动条视图控件(ScrollViewer)中。ScrollViewer属性说明:VerticalScrollBarVisibili

大家好,又见面了,我是你们的朋友全栈君。

wpf中,在控件中直接设置ScrollViewer.HorizontalScrollBarVisibility和ScrollViewer.VerticalScrollBarVisibility属性,并不能显示滚动条。因为在wpf中,想要显示滚动条,需要把控件放在滚动条视图控件(ScrollViewer)中。

ScrollViewer属性说明:

VerticalScrollBarVisibility="Auto"  // 设置垂直滚动条自动显示,只要内部控件的实际高度大于ScrollViewer的高度,就会自动显示垂直滚动条。
HorizontalScrollBarVisibility="Auto"  // 设置水平滚动条自动显示,只要内部控件的实际宽度大于ScrollViewer的宽度,就会自动显示水平滚动条。

由于WrapPanel和StackPanel比较特殊,所以这里对这两个控件做一下说明:

1、WrapPanel

内部控件自动换行布局的Panel。

那么什么情况下会自动换行呢?当达到WrapPanel宽度的时候。

问题:如果WrapPanel的HorizontalAlignment属性都设置为”Stretch”,那么就代表宽度可以无限大,这个时候就只会显示水平滚动条,垂直滚动条不生效。

解决方案1:设置WrapPanel的宽度。

解决方案2:设置WrapPanel的宽度自适应ScrollViewer的宽度:Width=”{Binding ElementName=scrList, Path=Width, Mode=OneWay}”,这个时候依赖于ScrollViewer控件的宽度。

2、StackPanel

内部控件垂直布局的Panel。

当子控件的宽度大于StackPanel的宽度,就会出现水平滚动条。

当子控件的高度大于StackPanel的高度,就会出现垂直滚动条。

一、WrapPanel应用举例。

1、显示水平滚动条。

 <ScrollViewer x:Name="scr" Margin="0" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto">
                                <WrapPanel x:Name="pnlCandidate"/>
                            </ScrollViewer>

2、显示垂直滚动条。

第一种情况:

 <ScrollViewer x:Name="scr" Margin="0" VerticalScrollBarVisibility="Auto">
                                <WrapPanel x:Name="pnlCandidate"/>
                            </ScrollViewer>

这个时候默认WrapPanel的HorizontalAlignment=“Stretch”,即自适应ScrollerViewer的宽度,所以WrapPanel子控件会自动换行,当超过父控件的高度,会显示垂直滚动条。

第二种情况:

 <ScrollViewer x:Name="scr" Margin="0" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto">
                                <WrapPanel x:Name="pnlCandidate" Width="{Binding ElementName=scrList, Path=Width, Mode=OneWay}"/>
                            </ScrollViewer>

当设置水平和垂直滚动条都自动显示的时候,如果想显示垂直滚动条,则需要设置Width=”{Binding ElementName=scrList, Path=Width, Mode=OneWay}”,使WrapPanel自适应ScrollViewer的宽度。

二、StackPanel子控件显示滚动条。

 <StackPanel>
                            <Label Content="候选列表" FontSize="18" Width="5000" Background="Transparent" Foreground="White" BorderThickness="1" BorderBrush="{DynamicResource DefaultBorderColor}"/>
                            <ScrollViewer x:Name="scrList" Margin="0" VerticalScrollBarVisibility="Auto" Height="390">
                                <local:WrapPanelTemplates x:Name="pnlCandidate"/>
                            </ScrollViewer>
                        </StackPanel>

效果图:

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/163318.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • XGBOOST + LR 模型融合 python 代码

    XGBOOST + LR 模型融合 python 代码XGBOOST+LR(XGBOOSTgridsearch)先留个广告,最近做一个数据挖掘的比赛,主要用的就是xgboost,等比赛完后年前好好整理代码开源,到时候代码会比下面整份完整。XGBOOST+LR是CTR常用的一种方式。下面是实现XGBOOST+LR的代码,具体的原理不做细说。有了下面的代码框架,你可以对xgboost进行参数优化搜索,同时可以利用

    2022年10月13日
  • c++中数组下标越界输出什么_C语言数组的越界和溢出

    c++中数组下标越界输出什么_C语言数组的越界和溢出引言最近突然想到当数组array有2个元素,而访问其array[2]时会不会编译错误的问题,答案是编译的时候不报错,只有运行的时候才报错。感悟以下是我测试用的代码,程序可以正常编译,且编译正确,只是在运行的时候出现程序崩溃。chararray[2]={‘2′,’3’};std::cout<<array[2]<<std::endl;//编译正常,运行的时候出现问题基于上述现象,说明程序在编译的时候没有进行下标越界的检查,当一个程序生成可执行文件的时候

  • 黑盒测试用例编写八大方法

    黑盒测试用例编写八大方法测试用例定义(8要素)测试用例实例什么是黑盒测试只能看见输入输出,不知道被测系统具体实现,仅仅知道对外接口通过输入输出测试常见黑盒测试方法(8个测试方法)等价类测试方法计算机0-100数字计算,要实现加法,最笨的方法是要两两相加,一旦数据多了就很难完成定义:在所有测试数据中(有满足要求的也有不满足要求的),挑选出具有某种共同特征的数据子集(把所有数字进行分类,可以根据需求来分,要求是0-100,满足要求的是一类,不满足要求的是一类)线性情况:像0-100数据线性增加word修

  • epoll、poll、select的原理和区别

    epoll、poll、select的原理和区别一、什么是epoll?epoll是一种I/O事件通知机制,是linux内核实现IO多路复用的一个实现。IO多路复用是指,在一个操作里同时监听多个输入输出源,在其中一个或多个输入输出源可用的时候返回,然后对其的进行读写操作。epoll有两种工作方式,ET-水平触发和LT-边缘触发(默认工作方式),主要区别是:LT,内核通知你fd是否就绪,如果没有处理,则会持续通知。而ET,内核只通知一次。二、epoll的三个函数intepoll_create(intsize)size参数告诉内核这

    2022年10月31日
  • 基于C++、MySQL的图书销售管理系统

    基于C++、MySQL的图书销售管理系统数据库课程设计报告开发环境与开发工具开发语言:C++、MySQL操作系统:macOSMojaveVersion10.14.5开发工具:XcodeIDE、iTerm命令行终端终端环境:iTerm+zsh、Xcode终端调试台MySQLServer版本:5.7.25MySQLCommunityServer(GPL)运行方式:cd到目录下make可完成编译连接,而后直接./bsms即可运行系统需求分析  当今的图书销售行业有数据量大、数据结构复杂、数据变

  • python错误和异常处理_python异常处理

    python错误和异常处理_python异常处理抛出异常Python使用raise语句抛出一个指定的异常。raise语法格式如下:raise[Exception[,args[,traceback]]]defdivision():”’功能:分苹果”’print(“\n=====================分苹果了=====================\n”)apple=int(input(“请输入苹果的个数:”))#.

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号