在我的程序中,我在视图框中有一个 WrapPanel。WrapPanel(实际上是 ItemsControl 的 ItemsPanelTemplate)包含一些可以是不同大小的绑定项。
<Viewbox Name="ViewWindow" Margin="10">
<Grid>
<ItemsControl ItemsSource="{Binding Path=Items}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Orientation="Vertical" MaxHeight="600"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
所有这一切的目标是我希望所有项目的大小都适合单个屏幕。Viewbox 通过缩放内容来处理这个问题,使它们都适合。WrapPanel 中的每个项目都是用户定义的文本,因此它们都可以是不同的大小。我试图用 WrapPanel 完成的是屏幕上的结果文本将尽可能大。我一直在通过设置 WrapPanel MaxHeight 来做到这一点,这样如果项目太高,它们就会被包裹到更多的列中,但这是一种很老套的方法,我发现对于不同的项目组,MaxHeight 需要是不同的。
作为我的意思的一个例子,想象 ItemsControl 绑定到的项目只是显示字母表中的每个字母。如果没有任何方法强制将项目包装到多列,您最终会得到一个非常高的列和非常小的文本,但是如果我们设置 WrapPanel 的 MaxHeight,那么我们可以像这样将项目强制到多列并且文本会在屏幕上变大:
A F K P U Z
B G L Q V
C H M R W
D I N S X
E J O T Y
我对这一切都错了吗?有没有比 WrapPanel 更好的控件?我需要创建某种自定义面板来获得我想要的吗?
谢谢你尽你所能的帮助
编辑:
举一个为什么 UniformGrid 不起作用的例子,假设我有这 5 个项目(每个字母代表一个不同的项目)
A C E
A C E
A D E
B D E
使用 UniformGrid,所有项目都将采用项目 E 的大小,并且它们都会在屏幕上占据更多空间。