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)


相关推荐

  • 一个服务器上运行多个tomcat,显示总启动某一个特定tomcat

    一个服务器上运行多个tomcat,显示总启动某一个特定tomcat

  • 考核题2「建议收藏」

    6.springmvc的工作流程是什么?SpringMVC流程1、用户向服务端发送一次请求,这个请求会先到前端控制器DispatcherServlet(也叫中央控制器)。2、DispatcherServlet接收到请求后会调用HandlerMapping处理器映射器。由此得知,该请求该由哪个Controller来处理(并未调用Controller,只是得知)3、DispatcherServlet调用HandlerAdapter处理器适配器,告诉处理器适配器应该要去执行哪个Controll

  • docker deepin_docker套件用法

    docker deepin_docker套件用法卸载1.卸载docker-cesudoapt-getremovedockerdocker-ce2.查看docker的文件位置whereisdocker结果如下:docker:/usr/bin/docker/etc/docker/usr/libexec/docker/usr/share/man/man1/docker.1.gz3.删除docker文件使用rm-rf命令删除这些文件如:sudorm-rf/usr/bin/docker删除后,可以使用dock

  • linux下杀死某个进程_shell脚本获取进程号并杀死进程

    linux下杀死某个进程_shell脚本获取进程号并杀死进程在做项目的时候经常会出现程序死机、锁死、无响应等情况,这时候就需要找到程序相应的进程将其杀掉即可。步骤如下:1.定位进程top命令:可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。通过top命令所提供的互动式界面,用热键可以管理。输入top后可以看到如下的界面,实时显示进程情况。ps命令:processstatus的简称,用于报告当…

  • 在Repeater中嵌套使用Repeater

    在Repeater中嵌套使用Repeater在一般的网站中浏览类别的用户控件通常都位于大多数ASP.NET页的左边,它使用户能够按类别快速的查找产品。最近遇到一个客户,因为在他网站上展示的产品并不多,所以要求在原有类别浏览的基础上将产品也加

发表回复

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

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