在我的程序中,我有一个放在viewbox里的WrapPanel。这个WrapPanel实际上是ItemsControl的ItemsPanelTemplate,包含一些绑定的项,它们的大小都可能不同。
所有这些的目标是让所有项的大小适合单个屏幕。Viewbox通过缩放内容以适应所有内容来处理此问题。WrapPanel中的每个项都是用户定义的文本,因此它们的大小可能各不相同。我尝试使用WrapPanel完成的任务是屏幕上的结果文本尽可能大。我一直通过设置WrapPanel MaxHeight来实现这一点,以便如果它们太高,就将项目包装到更多列中,但这是一种笨拙的方法,并且我发现对于不同的项目组,MaxHeight需要不同的值。
例如,假设ItemsControl绑定的项只显示字母表中的每个字母。如果没有任何方法强制项目换行到多个列,则会得到一个非常高的列,其中文本非常小,但如果我们设置WrapPanel的MaxHeight,则可以将项目强制换行到多个列中,文字在屏幕上会变得更大。
我这样做是错的吗?有比WrapPanel更好的控件吗?我需要创建某种自定义面板才能得到我想要的结果吗?
感谢您提供的任何帮助。
编辑:
如果使用UniformGrid不起作用,举个例子,假设我有这5个项目(每个字母代表一个不同的项目):
<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的大小,并且它们会在屏幕上占据更多的空间。