0

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

顺便说一句,自从开始 WPF 以来,我一直在努力了解哪些控件大小适用于他们的孩子以及哪些大小适用于他们的父母。是否有任何好的网站、备忘单或总结每个控件的行为的任何内容?

4

1 回答 1

1

如果您有可变数量的子元素,您可以将UniformGrid放入 ViewBox。

如果子元素必须通过 DataTemplate 进行可视化,则必须使用 ItemsControl 并将ItemsPanel属性设置为这样的 UniformGrid:

<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>
于 2012-08-24T08:46:30.020 回答