WPF ScrollViewer的水平滚动条从未显示过

时间:2010-12-07 11:38:37

标签: wpf scrollviewer horizontal-scrolling horizontalscrollview

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

我已将HorizontalScrollBarVisibility设置为Visible,这会强制它始终显示但永远不会显示。我也尝试过启用/禁用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);

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

2 个答案:

答案 0 :(得分:1)

 WPF Layout Controls - ScrollViewer

大多数时候,我们都不知道控件的大小,这将在scree中显示。 还有依赖于产品分辨率的情况,因为这是wpf的基本属性。 所以这就是为什么在WPF中有一个控件,即ScrollViewer(附加属性),只要内容出现在显示区域,就可以滚动这些内容。

<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

答案 1 :(得分:0)

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