我有一个带扩展器的ListBox,而后者又包含一个ListBox。 我希望ListBox with Expanders(listBox1)和每个Expander(listBox2)中的ListBox都具有滚动功能,但我不能让最里面的滚动工作(即我的XAML中的scrollViewer1)。
如何让两个滚动条都能正常工作?
PUT
答案 0 :(得分:0)
首先,你需要scrollviewer标签:listbox自己处理滚动。要控制列表框滚动条的可见性,您可以使用ScrollViewer.HorizontalScrollBarVisibility
和ScrollViewer.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。