C# 列表框中的包装行为:垂直填充可用空间,然后水平包装
我在自定义scrollviewer中有一个列表框,它提供了一些独特的视觉样式。列表框项目spanel是一个C# 列表框中的包装行为:垂直填充可用空间,然后水平包装,c#,.net,wpf,datatemplate,C#,.net,Wpf,Datatemplate,我在自定义scrollviewer中有一个列表框,它提供了一些独特的视觉样式。列表框项目spanel是一个WrapPanel,所有列表框项目都是100x100。列表框高度是静态的,不会更改。所需的布局如下:在包装之前垂直填充可用空间,如下所示: 我已经使用了WrapPanel的两个方向变量,但未能实现所需的布局。我怀疑这与我在自定义ScrollViewer控件中包装Listbox和Listbox无法正确计算可用空间有关。由于高度是静态的,我觉得我应该能够做到这一点(它只水平滚动,外部自定义滚动
WrapPanel
,所有列表框项目都是100x100。列表框高度是静态的,不会更改。所需的布局如下:在包装之前垂直填充可用空间,如下所示:
我已经使用了WrapPanel的两个方向变量,但未能实现所需的布局。我怀疑这与我在自定义ScrollViewer控件中包装Listbox和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中?或者如何实现所需的布局?通过硬编码包裹的高度,将方向设置为垂直,我能够实现所需的布局 我仍然对一个使用自定义scrollviewer替换列表框内部的scrollviewer的解决方案感到好奇