【问题标题】:Horizontal Scrollbar for WPF ScrollViewer never displayedWPF ScrollViewer 的水平滚动条从不显示
【发布时间】:2023-03-20 21:40:01
【问题描述】:

我无法为 WPF 滚动查看器显示水平滚动条。 ScrollViewer 包含一个用户控件,它根据输入对象动态呈现其内容,因此可能具有可变大小 - 当它呈现自身时,它将用户控件的宽度和高度设置为正确的大小。

我已将HorizontalScrollBarVisibility 设置为可见,这应该会强制它始终显示,但从不显示。我也尝试过启用/禁用CanContentScroll,但似乎没有任何区别。

垂直滚动条可以正常工作。

                ScrollViewer scroll = new ScrollViewer();
                scroll.HorizontalContentAlignment = HorizontalAlignment.Left;
                scroll.VerticalContentAlignment = VerticalAlignment.Top;
                scroll.HorizontalScrollBarVisibility = ScrollBarVisibility.Visible;
                scroll.CanContentScroll = true;
                Grid.SetRow(scroll, 1);

                GalaxyViewer viewer = new GalaxyViewer(g);
                viewer.HorizontalAlignment = HorizontalAlignment.Left;
                viewer.VerticalAlignment = VerticalAlignment.Top;
                viewer.HideShips();
                viewer.IsEditable = this.IsEditable;
                viewer.GalaxyEdited += this._galaxyEditedHandler;
                if (this._activePlayer > 0 && !this.IsEditable) viewer.ShowShipsForPlayer(this._activePlayer);
                scroll.Content = viewer;
                ScrollViewer.SetCanContentScroll(viewer, true);
                ScrollViewer.SetHorizontalScrollBarVisibility(viewer, ScrollBarVisibility.Visible);

                scroll.UpdateLayout();
                grid.Children.Add(scroll);

有人对此有任何想法/解决方案吗?

【问题讨论】:

  • 有趣的是,水平滚动条只有在我最大化表单时才会出现

标签: wpf scrollviewer horizontal-scrolling horizontalscrollview


【解决方案1】:

找到问题的原因 - 滚动条正在显示,但我在调整窗口大小时自动调整包含 scoll 查看器的控件的大小,这意味着水平 scoll 条正在从显示器中剪裁

【讨论】:

  • 您能否更详细地描述您的解决方案?谢谢
【解决方案2】:
 WPF Layout Controls - ScrollViewer

大多数时候,我们不知道控件的大小,它会显示在屏幕上。 也有使产品分辨率依赖的情况,因为这是 wpf 的基本属性。 所以这就是为什么在 WPF 中有一个控件,即 ScrollViewer(Attached property),它可以在内容到达显示区域时启用这些内容的滚动。

<ScrollViewer HorizontalScrollBarVisibility="Visible" ScrollViewer.VerticalScrollBarVisibility="Visible">
        <Grid ScrollViewer.HorizontalScrollBarVisibility="Visible">
            <Grid RenderTransformOrigin="0.555,0.491">
                <Grid.RowDefinitions>

                    <RowDefinition Height="auto"></RowDefinition>
                    <RowDefinition Height="auto"></RowDefinition>
                    <RowDefinition Height="auto"></RowDefinition>
                    <RowDefinition Height="auto"></RowDefinition>

                </Grid.RowDefinitions>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition ></ColumnDefinition>
                    <ColumnDefinition ></ColumnDefinition>
                    <ColumnDefinition ></ColumnDefinition>
                    <ColumnDefinition ></ColumnDefinition>
                    <ColumnDefinition ></ColumnDefinition>
                    <ColumnDefinition ></ColumnDefinition>
                    <ColumnDefinition ></ColumnDefinition>
                    <ColumnDefinition ></ColumnDefinition>
                </Grid.ColumnDefinitions>
    </Grid>
    </ScrollViewer>


Above example is a implementation of horizontal and vertical  scrollbar in a wpf form.

WPF TextBlock 中的自动垂直滚动条?

详情请访问:http://wpfbugs.blogspot.in/2014/02/wpf-layout-controls-scrollviewer.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-06
    • 1970-01-01
    • 2021-01-05
    • 1970-01-01
    • 2015-03-06
    • 2014-11-05
    相关资源
    最近更新 更多