调整大小主窗口的动态网格

时间:2014-11-01 19:36:30

标签: c# wpf dynamic grid resize

我首先要解释一下我想要完成的事情。所以我有一个包含图像的列表,这些图像有一个名称。我试图将这些图像(及其名称在它们下面)放在彼此相邻的网格中,我希望网格根据主窗口的大小有额外的列/行。 example

到目前为止我所做的是,我在自定义网格类中添加了以下内容,以跟踪主窗口的大小调整。

mainWindow = (MainWindow)Application.Current.MainWindow;
mainWindow.MainWindowResize += mainWindow_MainWindowResize;

在" mainWindow_MainWindowResize"我做了计算'添加/删除额外的列或行&这工作正常,但我想知道是否有更好的方法来做到这一点(例如,只使用xaml)。

1 个答案:

答案 0 :(得分:0)

以下是纯XAML中使用UniformGrid的示例

<UniformGrid Columns="5"
             Rows="3">
    <UniformGrid.Resources>
        <DataTemplate x:Key="MyImageTemplate">
            <DockPanel LastChildFill="True">
                <TextBlock Text="Image Title"
                           DockPanel.Dock="Bottom"
                           HorizontalAlignment="Center" />
                <Image Source="pr.png" />
            </DockPanel>
        </DataTemplate>
    </UniformGrid.Resources>
    <ContentControl ContentTemplate="{StaticResource MyImageTemplate}" />
    <ContentControl ContentTemplate="{StaticResource MyImageTemplate}" />
    <ContentControl ContentTemplate="{StaticResource MyImageTemplate}" />
    <ContentControl ContentTemplate="{StaticResource MyImageTemplate}" />
    <ContentControl ContentTemplate="{StaticResource MyImageTemplate}" />
    <ContentControl ContentTemplate="{StaticResource MyImageTemplate}" />
    <ContentControl ContentTemplate="{StaticResource MyImageTemplate}" />
    <ContentControl ContentTemplate="{StaticResource MyImageTemplate}" />
    <ContentControl ContentTemplate="{StaticResource MyImageTemplate}" />
    <ContentControl ContentTemplate="{StaticResource MyImageTemplate}" />
    <ContentControl ContentTemplate="{StaticResource MyImageTemplate}" />
    <ContentControl ContentTemplate="{StaticResource MyImageTemplate}" />
    <ContentControl ContentTemplate="{StaticResource MyImageTemplate}" />
    <ContentControl ContentTemplate="{StaticResource MyImageTemplate}" />
    <ContentControl ContentTemplate="{StaticResource MyImageTemplate}" />
</UniformGrid>

结果

result

以上只是一个例子,您可以根据需要进行调整