我首先要解释一下我想要完成的事情。所以我有一个包含图像的列表,这些图像有一个名称。我试图将这些图像(及其名称在它们下面)放在彼此相邻的网格中,我希望网格根据主窗口的大小有额外的列/行。 example
到目前为止我所做的是,我在自定义网格类中添加了以下内容,以跟踪主窗口的大小调整。
mainWindow = (MainWindow)Application.Current.MainWindow;
mainWindow.MainWindowResize += mainWindow_MainWindowResize;
在" mainWindow_MainWindowResize"我做了计算'添加/删除额外的列或行&这工作正常,但我想知道是否有更好的方法来做到这一点(例如,只使用xaml)。
答案 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>
结果
以上只是一个例子,您可以根据需要进行调整