WPF,ScrollViewer的屬性VerticalScrollBarVisibility、HorizontalScrollBarVisibility值的區別


ScrollViewer.HorizontalScrollBarVisibility 屬性

獲取或設置一個值,該值指示是否顯示水平方向的滾動條,默認值為Hidden

ScrollViewer.VerticalScrollBarVisibility 屬性

獲取或設置一個值,該值指示是否顯示垂直方向的滾動條,默認值為Visible


VerticalScrollBarVisibilityHorizontalScrollBarVisibilityScrollBarVisibility枚舉類型的值。

    //
    // 摘要:
    //     指定的可見性 System.Windows.Controls.Primitives.ScrollBar 的可滾動的內容。
    public enum ScrollBarVisibility
    {
        //
        // 摘要:
        //     一個 System.Windows.Controls.Primitives.ScrollBar 不即使不會出現在視區無法顯示的所有內容。 內容的維度設置為相應的維度的
        //     System.Windows.Controls.ScrollViewer 父級。 對於水平 System.Windows.Controls.Primitives.ScrollBar,
        //     ,內容的寬度設置為 System.Windows.Controls.ScrollViewer.ViewportWidth 的 System.Windows.Controls.ScrollViewer。
        //     對於垂直 System.Windows.Controls.Primitives.ScrollBar, ,內容的高度設置為 System.Windows.Controls.ScrollViewer.ViewportHeight
        //     的 System.Windows.Controls.ScrollViewer。
        Disabled = 0,
        //
        // 摘要:
        //     一個 System.Windows.Controls.Primitives.ScrollBar 出現和維度的 System.Windows.Controls.ScrollViewer
        //     視區無法顯示的所有內容時應用於內容。 對於水平 System.Windows.Controls.Primitives.ScrollBar, ,內容的寬度設置為
        //     System.Windows.Controls.ScrollViewer.ViewportWidth 的 System.Windows.Controls.ScrollViewer。
        //     對於垂直 System.Windows.Controls.Primitives.ScrollBar, ,內容的高度設置為 System.Windows.Controls.ScrollViewer.ViewportHeight
        //     的 System.Windows.Controls.ScrollViewer。
        Auto = 1,
        //
        // 摘要:
        //     一個 System.Windows.Controls.Primitives.ScrollBar 不即使不會出現在視區無法顯示的所有內容。 維度的 System.Windows.Controls.ScrollViewer
        //     不應用於內容。
        Hidden = 2,
        //
        // 摘要:
        //     一個 System.Windows.Controls.Primitives.ScrollBar 始終顯示。 維度的 System.Windows.Controls.ScrollViewer
        //     應用於內容。 對於水平 System.Windows.Controls.Primitives.ScrollBar, ,內容的寬度設置為 System.Windows.Controls.ScrollViewer.ViewportWidth
        //     的 System.Windows.Controls.ScrollViewer。 對於垂直 System.Windows.Controls.Primitives.ScrollBar,
        //     ,內容的高度設置為 System.Windows.Controls.ScrollViewer.ViewportHeight 的 System.Windows.Controls.ScrollViewer。
        Visible = 3
    }

通俗一點講:

  1. Disabled,禁用滾動條。表現在無論內容是否超過父容器大小,都不會顯示滾動條,並且滾動鼠標滑輪也不會滑動內容。
  2. Auto,自動。內容不超出父容器時,不顯示滾動條,超出父容器時,顯示滾動條。
  3. Hidden,隱藏滾動條。與Disabled的區別在於,這里只是隱藏,當滾動鼠標滑輪時,依然可以滾動內容。
  4. Visible,始終顯示。不論內容是否超過父容器大小,都會顯示滾動條。

可通過以下示例查看效果:

<Window x:Class="ScrollViewer.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:ScrollViewer"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">

    <Window.Resources>
        <Style x:Key="BorderStyle" TargetType="{x:Type Border}">
            <Setter Property="Background">
                <Setter.Value>
                    <LinearGradientBrush>
                        <LinearGradientBrush.GradientStops>
                            <GradientStop Color="AliceBlue" Offset="0"/>
                            <GradientStop Color="AntiqueWhite" Offset="0.2"/>
                            <GradientStop Color="Aqua" Offset="0.4"/>
                            <GradientStop Color="Aquamarine" Offset="0.6"/>
                            <GradientStop Color="Azure" Offset="0.8"/>
                            <GradientStop Color="Beige" Offset="1.0"/>
                        </LinearGradientBrush.GradientStops>
                    </LinearGradientBrush>
                </Setter.Value>
            </Setter>
        </Style>
    </Window.Resources>
    
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition/>
            <ColumnDefinition/>
            <ColumnDefinition/>
            <ColumnDefinition/>
            <ColumnDefinition/>
            <ColumnDefinition/>
            <ColumnDefinition/>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>

        <ScrollViewer VerticalScrollBarVisibility="Auto">
            <Border Height="800" Style="{StaticResource BorderStyle}" ToolTip="Auto"/>
        </ScrollViewer>
        <ScrollViewer Grid.Column="1" VerticalScrollBarVisibility="Auto">
            <Border Height="300" Style="{StaticResource BorderStyle}" ToolTip="Auto"/>
        </ScrollViewer>

        <ScrollViewer Grid.Column="2" VerticalScrollBarVisibility="Disabled">
            <Border Height="800" Style="{StaticResource BorderStyle}" ToolTip="Disabled"/>
        </ScrollViewer>
        <ScrollViewer Grid.Column="3" VerticalScrollBarVisibility="Disabled">
            <Border Height="300" Style="{StaticResource BorderStyle}" ToolTip="Disabled"/>
        </ScrollViewer>

        <ScrollViewer Grid.Column="4" VerticalScrollBarVisibility="Hidden">
            <Border Height="800" Style="{StaticResource BorderStyle}" ToolTip="Hidden"/>
        </ScrollViewer>
        <ScrollViewer Grid.Column="5" VerticalScrollBarVisibility="Hidden">
            <Border Height="300" Style="{StaticResource BorderStyle}" ToolTip="Hidden"/>
        </ScrollViewer>

        <ScrollViewer Grid.Column="6" VerticalScrollBarVisibility="Visible">
            <Border Height="800" Style="{StaticResource BorderStyle}" ToolTip="Visible"/>
        </ScrollViewer>

        <ScrollViewer Grid.Column="7" VerticalScrollBarVisibility="Visible">
            <Border Height="300" Style="{StaticResource BorderStyle}" ToolTip="Visible"/>
        </ScrollViewer>
    </Grid>
</Window>

效果如下:

ScrollViewer效果


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM