C# WPF UniformGrid动态行高

C# WPF UniformGrid动态行高,c#,wpf,height,uniformgrid,C#,Wpf,Height,Uniformgrid,我写了一个显示一些图像的小应用程序。为此,我使用了一个UniformGrid。我的xaml-代码: 这里有一条不同的路线,你可以看看。它使用网格代替,并使用类允许您执行所需操作,因为每行的默认高度设置为“自动” <ScrollViewer> <ItemsControl ItemsSource="{Binding Images}"> <ItemsControl.Template>

我写了一个显示一些图像的小应用程序。为此,我使用了一个
UniformGrid
。我的
xaml
-代码:


这里有一条不同的路线,你可以看看。它使用网格代替,并使用类允许您执行所需操作,因为每行的默认高度设置为“自动”

 <ScrollViewer>
            <ItemsControl ItemsSource="{Binding Images}">
                <ItemsControl.Template>
                    <ControlTemplate>
                        <Grid
                            IsItemsHost="True"
                            Loaded="Grid_Loaded"
                            GridHelpers.RowCount="{Binding Path=Items.Count, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ItemsControl}}}">
                        </Grid>
                    </ControlTemplate>
                </ItemsControl.Template>
                <ItemsControl.ItemTemplate>
                    <DataTemplate>
                        <materialDesign:Card Padding="32px" Margin="8px">
                            <StackPanel>
                                <StackPanel>
                                    <Image Source="{Binding Path, Mode=OneWay}" />
                                </StackPanel>
                            </StackPanel>
                        </materialDesign:Card>
                    </DataTemplate>
                </ItemsControl.ItemTemplate>
            </ItemsControl>
   </ScrollViewer>


您的问题是什么?你认为你的用户界面会是什么样子?@mm8看一下图片。第二个标记位置。两个图像(上一个和下一个)之间的空间也应为16px。正如MSDN所述,UniformGrid“提供了一种在网格中排列内容的方法,其中网格中的所有单元格大小相同”因此,可能它不是您所需要的控件。您是否尝试使用WrapPanel作为ItemsPanelTemplate而不是UniformGrid?@MyNewName您可以从小型博客文章开始。在
ArrangeOverride
中,您只需计算点的右X,Y坐标,即可为面板中的每个元素放置元素。在你的情况下,这些计算非常简单。自定义面板是解决WPF中许多与UI相关的问题的关键,因此我强烈建议您学习它:)