我想创建一个多列的复选框列表,但这里有一个问题 - 当我调整窗口大小时,我希望所有内容都相应缩放,包括文本大小。我一直在尝试使用WrapPanel和ViewBox,但无法正确使用XAML。这些控件是最佳选择还是我应该使用ListBox(注意我不需要选择功能或滚动条)?关于如何实现这一目标的任何建议或例子都将非常感激。我正在使用MVVM,如果有所不同,列表将是数据绑定。
自从启动WPF以来,我一直在努力去理解哪些控件的尺寸与他们的孩子一样,以及他们的父母的尺寸。是否有任何好的网站,备忘单或任何总结每个控件行为的内容?答案 0 :(得分:1)
如果你有一个可变数量的子元素,你可以将UniformGrid放入ViewBox。
如果必须通过DataTemplate显示子元素,则必须使用将ItemsPanel
属性设置为此类UniformGrid的ItemsControl:
<Viewbox Stretch="Uniform">
<ItemsControl ItemsSource="{Binding Items}" Width="400" Height="200">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns="4"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border Background="AliceBlue">
<CheckBox Content="{Binding Label}" IsChecked="{Binding IsChecked}"
HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Viewbox>