如何在ScrollViewer中滚动水平StackPanel?

时间:2019-08-28 03:10:00

标签: c# wpf xaml scrollviewer stackpanel

我是wpf的新手,我需要帮助。我必须水平显示n个垂直元素(堆栈面板)。我使用了水平堆栈面板将所有n个垂直堆栈面板放入其中,然后将水平堆栈面板放入scrollviewer中。 这是下面的xaml代码:

`<Window x:Class="Results.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"
            Title="MainWindow" Height="350" Width="525" Loaded="Window_Loaded">
<Grid>
    <telerik:RadButton x:Name="radButton" Content="Button" HorizontalAlignment="Left" Height="Auto" Margin="407,66,0,0" VerticalAlignment="Top" Width="Auto" Click="radButton_Click"/>
    <Grid>
        <ScrollViewer  Height="96" Margin="10,115,0,0"  Width="497" HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Disabled">
            <StackPanel x:Name="teststack" HorizontalAlignment="Left" Height="94" VerticalAlignment="Top" Width="497" Orientation="Horizontal"/>
        </ScrollViewer>
    </Grid>
</Grid>`

这是用于在下面生成n个元素的C#代码(其中col在垂直方向上,而teststack在水平方向上):

for (int i = 0; i < arrowcount; i++)
{
    StackPanel col = new StackPanel();
    TextBox row = new TextBox();
    Image img = new Image();
    col.Children.Add(row);
    col.Children.Add(img);
    teststack.Children.Add(col);
}

this image是我不想要的结果。因为我显示了20个元素,但是有12个元素却没有滚动条。我的理想是在此图像中的元素下方看到一个水平滚动条。 如果我以错误的方式问我的问题,请建议我编辑。

1 个答案:

答案 0 :(得分:2)

尝试不使用Height的{​​{1}}和Width

ScrollViewer