动态填充堆栈面板中的滚动条

时间:2014-03-04 02:08:47

标签: c# wpf button scrollbar stackpanel

我是WPF的新手,如果答案如此明显,请道歉。 我有一个WPF可调整大小的窗口,其中有一个垂直和水平拉伸的单个堆栈面板控件,以填充窗口。 在窗口激活事件中,我使用“.Children.Add”向面板添加按钮控件。我不知道在运行时会有多少按钮,所以我在面板中检查了“CanVerticallyScroll”。默认情况下,ScrollViewer.VerticalScrollBarVisibility设置为Visible。

我仍然没有在运行时看到滚动条。

使用按钮显示滚动面板时,我错过了哪些属性?

由于

XAML:

<Window x:Class="ResMed.Ecp.Utility.ConnectionWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="ConnectionWindow" Height="388" Width="641.6" Activated="Window_Activated">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition/>
            <RowDefinition Height="359*"/>
        </Grid.RowDefinitions>
        <StackPanel x:Name="pnlConnectionButtons" Margin="10,10.2,10.2,10" Grid.Row="1" CanVerticallyScroll="True"/>

    </Grid>
</Window>

代码背后:

private void Window_Activated(object sender, EventArgs e)
{
    for (int i = 0; i < 20; i++)
    {
        Button btn = new Button();
        btn.Content = "Hello";
        pnlConnectionButtons.Children.Add(btn);
    }
}

1 个答案:

答案 0 :(得分:4)

StackPanel放入ScrollViewer

<ScrollViewer>
    <StackPanel>
        <Button Content="Hello World"></Button>
        ...
        ...
    </StackPanel>
</ScrollViewer>

您也可以删除CanVerticallyScroll="True"。来自MSDN

  

此属性不适用于您的代码。它公开暴露以履行接口合同(IScrollInfo)。设置此属性无效。