寻找带缩放的WPF多列列表

时间:2012-08-24 08:09:58

标签: wpf

我想创建一个多列的复选框列表,但这里有一个问题 - 当我调整窗口大小时,我希望所有内容都相应缩放,包括文本大小。我一直在尝试使用WrapPanel和ViewBox,但无法正确使用XAML。这些控件是最佳选择还是我应该使用ListBox(注意我不需要选择功能或滚动条)?关于如何实现这一目标的任何建议或例子都将非常感激。我正在使用MVVM,如果有所不同,列表将是数据绑定。

自从启动WPF以来,我一直在努力去理解哪些控件的尺寸与他们的孩子一样,以及他们的父母的尺寸。是否有任何好的网站,备忘单或任何总结每个控件行为的内容?

1 个答案:

答案 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>