WPF瀑布流实现

来源:互联网 发布:芳纶纸淘宝 编辑:程序博客网 时间:2024/09/21 08:16

最近研究了一下WPF开发。

不知道WPF里有没有系统提供的瀑布流,我自己写了一个。

代码很简单

注:imageList里是图片的路径 nameList是图片名称(可以用其他的)

public event MouseButtonEventHandler imageMouseDown;// 这里有个名为ImageClick的点击事件imageMouseDown += new MouseButtonEventHandler(ImageClick);for (int i = 0; i < imageList.Count; i++){Image image = new Image();image.Width = 160;image.Height = 160;image.Source = new BitmapImage(new Uri(imageList[i], UriKind.Absolute));// 这里是让图片从左上开始排列 默认居然是center... 不知道这是什么思路image.VerticalAlignment = VerticalAlignment.Top;image.HorizontalAlignment = HorizontalAlignment.Left;// 这里记录下图片的名字 其实记录什么都可以image.Tag = nameList[i];// 让图片编号从1开始int j = i + 1;int row = 0;int column = 0;// 我默认一行四张图片 如果是最后一张图片if (j % 4 == 0){// 这里可以被整除row = j / 4;// 那肯定是最后一列的 4 % 4 = 0 所以要在这里赋值               column = 4;}// 如果是剩下三列的图else{// 这里不能整除,但实际上每够4张就该是下一行的了row = j / 4 + 1;column = j % 4;}// 我的图片宽160 高160 列间距24 行间距2image.Margin = new Thickness(24 * column + 160 * (column - 1), 80 + 2 * (row - 1) + 160 * (row - 1), 0, 0);// 打印下可以看见Console.WriteLine("j:" + j + " row:" + row + " column:" + column);// 加入页面gridMain.Children.Add(image);// 设置点击事件image.AddHandler(Image.MouseDownEvent, this.imageMouseDown);// 调整容器大小 其实拿最后一张图片调整就可以了 但谁让我懒呢……gridMain.Height = image.Margin.Top + image.Height + 10;}

补充:还有最后一点,当grid大小小于窗口大小的时候,因为默认是center,所以会整个画布下移。

最后加个判断:

if (gridMain.Height < WindowHeight) gridMain.Height = WIndowHeight;

请不要吐槽我的算法,毕竟离大神还有一个ACM的距离。其实我十分想搞算法,无奈还是一直工作了……

就是这样,喵。


如果写的哪里有什么问题,欢迎随时联系我,但是我不经常在线。

也可以在我的微博上私信我,我的微博:黑騏(骐是繁体的)

如果要转载我的文章,请署名黑骐并附上原文链接,在下先行谢过。


2016年7月30日

黑骐


0 0
原创粉丝点击