Windows 10 如何实现自适应布局,其中项目在网格中调整大小以适应添加项目的需要?

Windows 10 如何实现自适应布局,其中项目在网格中调整大小以适应添加项目的需要?,windows-10,uwp,Windows 10,Uwp,我正在尝试完成一个布局,当我将项目添加到集合中时,项目在网格中显示得更小,以便: 有一个项目是全屏的 2是全屏的 有3个,每个项目占屏幕的1/3 在第4行中添加一行,并在7、10等元素处再次添加 因此,对于6个元素,结果与maxcolumn=3的wrapgrid相同,但如果少于3个,则项目仍然占据所有大小(这是为了显示图片以供选择,因此如果图片较少,我希望它们更大,在我的情况下,1或2图片场景是常见的) 编辑:我试图实现的一个很好的例子是WPF的UniformGrid,它的布局随着您添加项目而调

我正在尝试完成一个布局,当我将项目添加到集合中时,项目在网格中显示得更小,以便:

有一个项目是全屏的 2是全屏的 有3个,每个项目占屏幕的1/3 在第4行中添加一行,并在7、10等元素处再次添加

因此,对于6个元素,结果与maxcolumn=3的wrapgrid相同,但如果少于3个,则项目仍然占据所有大小(这是为了显示图片以供选择,因此如果图片较少,我希望它们更大,在我的情况下,1或2图片场景是常见的)


编辑:我试图实现的一个很好的例子是WPF的UniformGrid,它的布局随着您添加项目而调整。

有多种方法可以实现这种效果。下面是使用ViewBox和GridView的解决方案

在XAML中(您可以使用绑定图标将矩形更改为图像):


在CS中:

 cvsProjects = new List<Project>();
 Project item0 = new Project() { Name = "pic1", IconUri = "Images/p1.jpg"};
 Project item1 = new Project() { Name = "pic2", IconUri = "Images/p2.jpg" };
 Project item2 = new Project() { Name = "pic3", IconUri = "Images/p3.jpg" };
 Project item3 = new Project() { Name = "pic4", IconUri = "Images/p4.jpg" };
 Project item4 = new Project() { Name = "pic5", IconUri = "Images/p5.jpg" };
 Project item5 = new Project() { Name = "pic6", IconUri = "Images/p6.jpg" };
 cvsProjects.Add(item0);
 cvsProjects.Add(item1);
 cvsProjects.Add(item2);
 cvsProjects.Add(item3);
 cvsProjects.Add(item4);
 cvsProjects.Add(item5);
 test.ItemsSource = cvsProjects;
cvsProjects=new List();
Project item0=newproject(){Name=“pic1”,IconUri=“Images/p1.jpg”};
Project item1=newproject(){Name=“pic2”,IconUri=“Images/p2.jpg”};
Project item2=newproject(){Name=“pic3”,IconUri=“Images/p3.jpg”};
Project item3=newproject(){Name=“pic4”,IconUri=“Images/p4.jpg”};
Project item4=newproject(){Name=“pic5”,IconUri=“Images/p5.jpg”};
Project item5=newproject(){Name=“pic6”,IconUri=“Images/p6.jpg”};
cvsProjects.Add(第0项);
CVS项目新增(第1项);
CVS项目新增(第2项);
CVS项目新增(第3项);
CVS项目新增(第4项);
CVS项目新增(第5项);
test.ItemsSource=CVS项目;

谢谢,使用viewbox解决了我所有的问题!
 cvsProjects = new List<Project>();
 Project item0 = new Project() { Name = "pic1", IconUri = "Images/p1.jpg"};
 Project item1 = new Project() { Name = "pic2", IconUri = "Images/p2.jpg" };
 Project item2 = new Project() { Name = "pic3", IconUri = "Images/p3.jpg" };
 Project item3 = new Project() { Name = "pic4", IconUri = "Images/p4.jpg" };
 Project item4 = new Project() { Name = "pic5", IconUri = "Images/p5.jpg" };
 Project item5 = new Project() { Name = "pic6", IconUri = "Images/p6.jpg" };
 cvsProjects.Add(item0);
 cvsProjects.Add(item1);
 cvsProjects.Add(item2);
 cvsProjects.Add(item3);
 cvsProjects.Add(item4);
 cvsProjects.Add(item5);
 test.ItemsSource = cvsProjects;