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

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 【Unity3D插件】Unity3D各类教程汇总「建议收藏」

    推荐阅读CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客QQ群:1040082875一、工具篇工欲善其事,必先利其器学习Unity3D不从工具篇说起怎么能行?学习Unity3D最重要的两个工具:Unity3D和VisualStudio(VisualStudioCode也行)1-1、Unity3D安装Unity安装个人免费版步骤详解(通过UnityHub安装unity,是比较流行的安装方式)https://blog.csdn.net/fi.

    2022年4月14日
    49
  • gbase导出sql_gbase修改字段名称

    gbase导出sql_gbase修改字段名称喵了个咪的。到目前为止,自己已经用过SQLSERVER,MySQL,Oracle,SQLite,加上南大通用GBASE五种数据库了。虽然每种都用的不深注:GBASE提供了C的API,查看手册即可。不支持string。用C++配置GBASE:对方提供了32位和64位windows下的库。在程序中添加gbase.herrmsg.h两个头文件,导入gbaseclient.liblibgb…

    2025年6月19日
    0
  • java.text.NumberFormat使用方法

    java.text.NumberFormat使用方法

    2021年12月6日
    41
  • JS代码大全

    JS代码大全事件源对象 event.srcElement.tagName event.srcElement.type捕获释放 event.srcElement.setCapture

    2022年7月1日
    21
  • java进行四舍五入_java 实现四舍五入功能

    java进行四舍五入_java 实现四舍五入功能告诉你一个小技巧,用4行java代码实现一个四舍五入功能的实例。四舍五入是一种精确度的计数保留法,与其他方法本质相同。但特殊之处在于,采用四舍五入,能使被保留部分的与实际值差值不超过最后一位数量级的二分之一,这种保留法的误差总和是最小的。例子例如π,便被四舍五入,大多保留下3.14了。但是,有的时候不可以用四舍五入的方法,而要用”进一法”和”退一法”。例如,288个学生春游,45人一辆大巴,算下来…

    2022年5月21日
    26
  • Java 文件上传 MultipartFile

    Java 文件上传 MultipartFileJava文件上传MultipartFile1. 配置MultipartResolver:用于处理表单中的file

    2022年5月14日
    48

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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