我在自定义scrollviewer中有一个列表框,它提供了一些独特的视觉样式。列表框ItemsPanel是WrapPanel
,所有列表框项目都是100x100。列表框高度是静态的,不会更改。所需的布局是这样的:在包装之前垂直填充可用空间,如下所示:
我使用了WrapPanel的两个Orientation变量,并且无法实现所需的布局。我怀疑这与我在自定义ScrollViewer控件中包装Listbox并且列表框无法正确计算可用空间这一事实有关。由于高度是静态的,我觉得我应该能够做到这一点(它只能水平滚动,而外部自定义滚动查看器应该进行滚动)。以下是当前的设置:
<controls:CustomScrollViewer HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Hidden">
<controls:CustomScrollViewer.Template> .... </controls:CustomScrollViewer.Template>
<ListBox Height="...">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate> .... </DataTemplate>
</ListBox.ItemTemplate>
<ListBox.Resources>
<Style TargetType="{x:Type ListBoxItem}"> .... </Style>
</ListBox.Resources>
</ListBox>
</controls:CustomScrollViewer>
有没有办法让ListBox在内部使用自定义scrollviewer,而不是将Listbox包装在scrollviewer中?或者我如何实现所需的布局?
答案 0 :(得分:1)
通过对WrapPanel
的高度进行硬编码,并将方向设置为Vertical
,我就能够实现所需的布局。
我仍然会对使用自定义scrollviewer替换列表框内部的scrollviewer的解决方案感到好奇。