如何在XAML中的网格中的列表框中添加滚动条?

时间:2015-09-28 06:44:38

标签: c# wpf xaml

我是XAML的新手,我似乎无法解决这个问题。我想要一个两列页面(在winforms术语中)停靠到它的容器。第一列有一个列表框,我希望它在需要时自动显示滚动条。我能够这样做,但前提是我设置了ListBox的Height或MaxHeight。我的问题是当主要窗口/窗体调整大小时,列表框不再增大。我想要的是将列表框停靠到第一列,以便在调整表单大小时调整大小,并在需要时显示滚动条。

以下是未显示滚动条的代码:

<Window x:Class="WpfApplication3.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="auto" />
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>

    <StackPanel Grid.Column="0" Grid.Row="0">

        <ListBox x:Name="lstView"
                 ScrollViewer.VerticalScrollBarVisibility="Auto"
                 ScrollViewer.HorizontalScrollBarVisibility="Disabled"
                  Margin="10">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal" Height="20">
                        <TextBlock Text="{Binding}"/>
                    </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
    </StackPanel>
</Grid>

以下是显示滚动条但具有固定高度的代码。

<Window x:Class="WpfApplication3.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="auto" />
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>

    <StackPanel Grid.Column="0" Grid.Row="0">

        <ListBox x:Name="lstView"
                 ScrollViewer.VerticalScrollBarVisibility="Auto"
                 ScrollViewer.HorizontalScrollBarVisibility="Disabled"
                 Height="200"
                  Margin="10">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal" Height="20">
                        <TextBlock Text="{Binding}"/>
                    </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
    </StackPanel>
</Grid>

1 个答案:

答案 0 :(得分:1)

使用StackPanel时滚动条可见性的问题。我认为这是因为StackPanel总是要包含所有子节点所需的大小。尝试重新组织布局以删除StackPanel(使用 Grid ),看看是否有帮助。