最初我想让listview依赖于窗口高度参数,但老实说,我觉得这个解决方案不切实际,相信它可以做得更好。
这是我感兴趣的一个对象:
<StackPanel>
<TextBlock Text="{Binding LessonTitle}" Foreground="Black" HorizontalAlignment="Center" Margin="0,10,0,0" FontSize="36" Background="DimGray"></TextBlock>
<Grid Height="Auto" ScrollViewer.CanContentScroll="True" ScrollViewer.VerticalScrollBarVisibility="Hidden">
<ListView x:Name="LV2" Background="DimGray"
BorderBrush="Transparent"
ItemsSource="{Binding Lessons}"
ScrollViewer.VerticalScrollBarVisibility="Hidden"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
SizeChanged="LV2_SizeChanged">
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Height="1000"
ScrollViewer.CanContentScroll="True"
ScrollViewer.VerticalScrollBarVisibility="Hidden">
<TextBlock Width="Auto" FontSize="24" Foreground="Black" TextWrapping="Wrap">
<Run Text="{Binding LessonText}"/>
</TextBlock>
<Image Source="{Binding LessonImage}"/>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Grid>
</StackPanel>
我的列表视图和几次尝试的残余,使它可滚动(也可调整大小的窗口),滚动我的意思是使整个列表滚动顺利,而不是每个元素,但我不知道如何实现它。
我已经尝试过将stackpanel改为dockpanel/grids,反之亦然,不同的scrollviwer位置,但都不起作用。到目前为止,我最多只能滚动列表视图的第一个项目,或者一个项目一个项目滚动。
1条答案
按热度按时间cnwbcb6i1#
默认情况下,ListBox具有这些属性。只需定义可见区域的大小,超出该区域的所有内容都可以滚动。您可能希望将项目分隔到它们自己的项目插槽中,而不是扩展到远远超出其内容尺寸的堆栈面板。下面是一个例子:
如果需要用大量的项填充列表,最简单的方法是在。cs / vb代码隐藏。C#应该是这样的:
如果需要多种类型的父控件,请添加一个if else循环来检查类型,并添加一个foreach循环来处理相应的类型