扩展器中的ScrollViewer

时间:2015-09-18 09:45:43

标签: .net wpf xaml scrollviewer expander

我有一个带扩展器的ListBox,而后者又包含一个ListBox。 我希望ListBox with Expanders(listBox1)和每个Expander(listBox2)中的ListBox都具有滚动功能,但我不能让最里面的滚动工作(即我的XAML中的scrollViewer1)。

如何让两个滚动条都能正常工作?

PUT

1 个答案:

答案 0 :(得分:0)

首先,你需要scrollviewer标签:listbox自己处理滚动。要控制列表框滚动条的可见性,您可以使用ScrollViewer.HorizontalScrollBarVisibilityScrollViewer.VerticalScrollBarVisibility

其次,内部列表框的垂直滚动条不会出现,因为没有高度限制,列表框将展开以显示所有项目。

这是一个工作代码,它显示父级和内部列表框的滚动条:

<Window x:Class="StackOverflow.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>
    <ListBox x:Name="listBox1" ItemsSource="{Binding Clients}">
        <ListBox.ItemTemplate>
            <DataTemplate>

                <Expander>
                    <Expander.Header>
                        <TextBlock Text="{Binding Name}">
                        </TextBlock>
                    </Expander.Header>

                    <ListBox x:Name="listBox2" ItemsSource="{Binding Children}" MaxHeight="150">
                        <ListBox.ItemTemplate>
                            <DataTemplate>
                                <StackPanel>
                                    <Grid>
                                        <TextBlock Grid.Column="0" Text="{Binding Name}"/>
                                    </Grid>
                                </StackPanel>
                            </DataTemplate>
                        </ListBox.ItemTemplate>
                    </ListBox>

                </Expander>

            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
</Grid>
</Window>

要重现您的问题,只需删除第二个列表框中的MaxHeight。