当前位置:首页 > 技术知识 > 正文内容

WPF - 10.特殊容器控件(wpf控件属性介绍)

maynowei10个月前 (08-16)技术知识117

摘要

这里我们要介绍的特殊容器空间是ScrollViewer,该控件与其他控件不同的是,可以支持滚动显示容器内的元素。 下面我们举例说明如何在WPF中使用ScrollViewer控件。

新建一个WPF程序,在Grid面板中加入ScrollViewer控件,然后在控件里面拖入一个TexBox用来显示文字,拖动时注意将窗口大小设置小一点,把TextBox的大小设置大一点,让里面的文字不能够全部看完,需要拖动滚动条才可以看完全部内容。

我们给TextBox里面增加一些文字内容,设置TextWrapping属性的值为Wrap使文本框内的文字自动换行。 我们还可以设置ScrollViewer控件的
HorizontalScrollBarVisibility和
VerticalScrollBarVisibility属性来设置水平和垂直滚动条的显示效果,我们这里设置为Auto即可。

正文


ScrollViewer有一个滚动条设置的属性,在垂直方向有
VerticalScrollBarVisibility=“Hidden” 有四种取值,分别是:

  • Visible:显示滚动条
  • Hidden:隐藏滚动条,用光标仍然可以滚动内容
  • Disable:隐藏滚动条,用光标不可以滚动内容
  • Auto:只有当内容超出容器时才会显示滚动条

以上四种取值均可用滑轮滚动内容。 在水平方向,也有
HorizontalScrollBarVisibility属性。

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition></RowDefinition>
        <RowDefinition Height="Auto"></RowDefinition>
    </Grid.RowDefinitions>
    <ScrollViewer Margin="10"  VerticalScrollBarVisibility="Auto" Name="sv">
        <TextBox Height="350" TextWrapping="Wrap" Text="this is test" Name="txt"></TextBox>
    </ScrollViewer>
    <StackPanel Orientation="Horizontal" Grid.Row="1">
        <Button x:Name="btnTop" Content="Top" Margin="5" Click="btnTop_Click"></Button>
        <Button x:Name="btnUp" Content="Line Up" Click="btnUp_Click" Margin="5"></Button>
        <Button x:Name="btnDown" Content="Line Down" Click="btnDown_Click"  Margin="5"></Button>
        <Button x:Name="btnPageUp" Content="Page Up" Click="btnPageUp_Click"  Margin="5"></Button>
        <Button x:Name="btnEnd" Content="End" Margin="5" Click="btnEnd_Click"></Button>
    </StackPanel>
</Grid>
private void btnTop_Click(object sender,RoutedEventArgs e)
{
    this.sv.ScrollToTop();  //顶部
}
private void btnUp_Click(object sender, RoutedEventArgs e)
{
    sv.LineUp();//上一行
}
private void btnPageUp_Click(object sender, RoutedEventArgs e)
{
    sv.PageUp();//上一页
}
private void btnEnd_Click(object sender, RoutedEventArgs e)
{
    this.sv.ScrollToEnd();  //底部
}

private void btnDown_Click(object sender, RoutedEventArgs e)
{
    sv.LineDown();//下一行
}

private void btnPageDown_Click(object sender, RoutedEventArgs e)
{
    sv.PageDown();//下一页
}
<ScrollViewer Margin="5" CanContentScroll="True" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto">
    <StackPanel Margin="2">
        <Button Content="Button1" Margin="5" Height="50"></Button>
        <Button Content="Button2" Margin="5" Height="50"></Button>
        <Button Content="Button3" Margin="5" Height="50"></Button>
        <Button Content="Button4" Margin="5" Height="50"></Button>
    </StackPanel>
</ScrollViewer>

在点击滚动条上下按键时无法保证让某一个控件完全显示,此时只要将ScrollViewer的CanContentScroll属性设为True即可

相关文章

那些技术—Listview的性能提高篇(listview提高效率)

ListView优化一直是一个老生常谈的问题,不管是面试还是平常的开发中,ListView永远不会被忽略掉,那么这篇文章我们来看看如何最大化的优化ListView的性能。 · 1.在adapter中的...

Android TabLayout + ViewPager2使用

1、xml文件<!--明细列表--> <com.google.android.material.tabs.TabLayout android:id="@+id/ty_...

一文弄懂 GO 的 互斥锁 Mutex !(互斥锁的使用方法)

在 Go 语言并发编程中,互斥锁(Mutex)是一个非常重要的同步原语。本文将深入介绍 Mutex 的使用方法、实现原理以及最佳实践。1. 什么是 Mutex?Mutex(互斥锁)是一种用于多线程编程...

Go 语言中的 RWMutex 源码解析、使用场景及应用分析

Go 语言标准库的 sync 包提供了一些非常重要的并发原语来帮助程序开发者处理并发任务。本文将详细解析 sync 包中的 RWMutex,即读写互斥锁(Reader/Writer Mutex),并结...

关于异步信号安全(下面关于异步电路危害的描述错误的是)

线程安全与重入以及异步信号安全的区别. 可重入一定是线程安全的,但是线程安全不一定是可重入的. 引用别人的博客中的话吧.如下: http://blog.csdn.net/xiaofei0859/art...

什么?Java 中的锁还有状态?(java中的锁都有哪些类型)

线程如果锁住了某个资源,致使其他线程无法访问的这种锁被称为悲观锁,相反,线程不锁住资源的锁被称为乐观锁,而自旋锁是基于 CAS 机制实现的,CAS又是乐观锁的一种实现,那么对于锁来说,多个线程同步访问...