WPF制作QQ列表(仿qq列表特效)
先看效果图:这个是折叠特效。
代码结构:
model是我们的数据模型,定义了在列表显示的人物名称 图片 简介 。
Resource是我们的图片资源 和 存储图片资源路径、名称的资源文件。
GroupListCreate是我们的主要创建列表的模块。
代码如下:
public StackPanel CreateModuleEntry(List<GroupPerson> hrvGroups){if (hrvGroups != null){StackPanel spl = new StackPanel(); //创建一个最外围的框List<GroupPerson> groups = hrvGroups;foreach (GroupPerson g in groups) //根据分组去遍历 {int count = 1;Expander ex = new Expander(); //每一个分组ex.Header = g.Name;List<Person> modules = new List<Person>();modules = g.Persons;StackPanel sp = new StackPanel(); //每一个分组的框foreach (Person m in modules){DockPanel dp = new DockPanel();if (count >= 2){Thickness dpMargin = new Thickness(0, 10, 0, 0);dp.Margin = dpMargin;}dp.MouseLeave += new System.Windows.Input.MouseEventHandler(dp_MouseLeave);dp.MouseEnter += new System.Windows.Input.MouseEventHandler(dp_MouseEnter);dp.MouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(dp_MouseLeftButtonDown);dp.MouseLeftButtonUp += new System.Windows.Input.MouseButtonEventHandler(dp_MouseLeftButtonUp);//人物头像Bitmap bm = new Bitmap(ImagePathResource.ImageSource+m.Ico);MemoryStream ms = new MemoryStream();bm.Save(ms, System.Drawing.Imaging.ImageFormat.Png);BitmapImage bi = new BitmapImage();bi.BeginInit();bi.StreamSource = new MemoryStream(ms.ToArray());bi.EndInit();ms.Dispose();System.Windows.Controls.Image image = new System.Windows.Controls.Image();Thickness imageMargin = new Thickness(0, 0, 0, 0);image.Margin = imageMargin;image.Source = bi;image.Width = 50;image.Height = 50;image.Stretch = Stretch.Fill;//人物名称Label lblName = new Label();Thickness lblNameMargin = new Thickness(15, 0, 0, 0);lblName.Margin = lblNameMargin;lblName.Height = 25;lblName.Content = m.Name;lblName.FontSize = 13;lblName.FontWeight = FontWeights.Bold;//人物说明WrapPanel dpl = new WrapPanel();Thickness t3 = new Thickness(15, 0, 0, 0);dpl.Margin = t3;//说明文字的自动换行for (int i = 0; i < m.Introduction.Length; i++){string s = m.Introduction.Substring(i, 1);Label lblResume = new Label();lblResume.Content = s;dpl.Children.Add(lblResume);}dpl.ItemHeight = 18;dp.Children.Add(image);dp.Children.Add(lblName);dp.Children.Add(dpl);DockPanel.SetDock(image, Dock.Left);DockPanel.SetDock(lblName, Dock.Top);sp.Children.Add(dp);count++;}ex.Content = sp;spl.Children.Add(ex);}return spl;}return null;}
View Code
这里我们直接返回一个stackpanel用来在界面展示,这样自动创捷列表基本上就完成了。
里面的四个事件是用来做鼠标浮动其上和按下的效果
void dp_MouseEnter(object sender, System.Windows.Input.MouseEventArgs e){dp = sender as DockPanel;dp.Background = System.Windows.Media.Brushes.LightGray;}DockPanel dp = null;void dp_MouseLeftButtonUp(object sender, System.Windows.Input.MouseButtonEventArgs e){dp = sender as DockPanel;dp.Background = System.Windows.Media.Brushes.LightGray;}void dp_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e){dp = sender as DockPanel;dp.Background = System.Windows.Media.Brushes.Gray;}void dp_MouseLeave(object sender, System.Windows.Input.MouseEventArgs e){dp = sender as DockPanel;dp.Background = System.Windows.Media.Brushes.Transparent;}
剩下的工作就是怎样去显示 和 显示出比较炫的效果了。
先说说显示,显示主要就在PersonView.xaml文件里面,这是一个UserControl;
这个很简单 首先在PersonView.xaml里面用一个Grid,里面再放一个ScrollViewer再加上我们的 StackPanel就大功告成了!
代码如下:
<UserControl x:Class="WpfApplication2.PersonView"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" mc:Ignorable="d" Background="Black"d:DesignHeight="300" d:DesignWidth="250"Loaded="UserControl_Loaded"><Grid Name="gd"><ScrollViewer Name="sv" Width="250" Height="300" VerticalScrollBarVisibility="Auto"><StackPanel Name="sp"></StackPanel></ScrollViewer></Grid> </UserControl>
PersonView.xaml.cs文件代码:
private void UserControl_Loaded(object sender, RoutedEventArgs e){List<GroupPerson> gps = GetListGroup();GroupListCreate glc = new GroupListCreate();sp = glc.CreateModuleEntry(gps);sv.Content = sp;}
关于GetListGroup 我就不写了这个就是根据我们定义的数据模型去给初始化一下。
数据模型和Style我就不贴了 数据模型看我创建的列表就能看出来, Style代码实在太多。
需要完整代码的朋友请加群
C#/WPF技术交流群: 94234450
点击加入QQ群:
不管你遇到了什么问题,我们都不会让你独自去面对!
转载于:https://www.cnblogs.com/BeiJing-Net-DaiDai/p/3934940.html
WPF制作QQ列表(仿qq列表特效)相关推荐
- WPF C#截图功能 仿qq截图
先上效果图 源码下载地址:http://download.csdn.net/detail/candyvoice/9788099 描述:启动程序,点击窗口button,开始截图,鼠标左键按下拖动,选中任 ...
- java仿qq_「java qq」仿QQ聊天软件java实现(一) - seo实验室
java qq 之前学java通信的时候写过简单的通信程序,但比较简陋,于是重新写了一个仿照QQ的聊天软件,主要在界面上做了优化,增加了一些功能.实现的功能有注册.登录.好友列表.分组.黑名单.添加好 ...
- java仿qq gui_Java仿QQ登入页面
1.[代码][Java]代码 package com.myqq.frame; import java.awt.BorderLayout; import java.awt.Color; import j ...
- android qq apk,仿QQ获取手机中的APK并分享的实现
前几天看到同事里有一个界面绚丽的应用,觉得有点意思,就让他把APK发给我,我想反编译看看里面的代码.结果,这哥们在手机里找了好一阵子,最后给我说:手机没有root,找不到APK文件在哪里.我再让他试试 ...
- WPF编程;上位机编程;C#编程;仿QQ基础实现(一)之界面预览
简介 一.摘要 1.描述 2.关键字 二.什么是WPF 三.为什么选择WPF 四.仿QQ的登录界面 五.仿QQ联系人界面 六.源码下载 七.其他 八.参考 一.摘要 1.描述 本文主要描述的是如何通过 ...
- 仿QQ聊天软件(登录界面、好友界面、聊天界面)-Java(Swing、Socket)
文章目录 一.项目结构 二.项目功能 三.制作界面 (一).登录界面的制作 (二).好友列表界面 (三).聊天界面 四.制作服务器 五.设计通信协议 六.项目缺点 学习了socket通信后,就想来制作 ...
- 仿QQ聊天程序(java)
仿QQ聊天程序(java) 2014年03月17日 15:52:47 标签: java / 聊天 / 仿QQ 90246 仿QQ聊天程序 转载出处: https://blog.csdn.net/u01 ...
- iOS之仿QQ好友列表展开收缩效果的实现
使用UICollectionView实现 思路 很明显整体它是一个列表,它的分组是一个列表,它里面的好友列表也是一个列表,所以就可以使用组头来设置分组列表,使用cell设置好友列表: 当点击组头的时候 ...
- html仿qq最小化怎么实现,JS仿QQ好友列表展开、收缩功能(第一篇)
JS仿QQ好友列表展开.收缩功能(第一篇) 发布时间:2020-10-17 14:20:03 来源:脚本之家 阅读:96 作者:erdouzhang 效果图如下所示: html: 我的好友 张三 李四 ...
- 仿 手机QQ 登录、注册、找回密码、好友列表、QQ状态等功能的实现
仿 手机QQ 登录.注册.找回密码.好友列表.QQ状态等功能的实现 全文 图 + 代码 .... 福利!!!(QQ登录背景,过度页面背景) 1.加载过程中的背景 2.登录页面 ==1. 登录页面 布局 ...
最新文章
- MySQL-BETWEEN AND范围查询问题
- [原创]修改oracle 数据库默认时间格式
- DevOps工程师到底是做什么的?
- python画气泡图_​用Python把图做的好看点:用Matplotlib画个好看的气泡图
- win10,配置环境变量时系统环境变量和用户环境变量的优先级
- 12c oracle 修改内存_还在等12.2吗?Oracle 12c后这个观念要改改!
- 网络聊天室的技术与发展
- 中小微企业公共信用数据的风险评估
- NP、OSPF链路状态数据库
- html打开本地excel文件夹,html使用excel表格数据库-html读取本地excel文件并展示
- CF1041B Buying a TV Set
- Unity3D开发学习
- python安装包错误的问题
- 在固态硬盘上安装linux系统怎么安装,教程|教你一键重装怎么将系统安装在固态硬盘上...
- 服务器提供各种服务 包括文件服务器,服务器提供各种服务,包括文件服务器、邮件服务器、Web服务器等。...
- python建模_python建模实例详解
- 怎么快速把wmv视频格式转换成mp4视频
- 计算机专业论文评语,计算机毕业论文评语
- GHO是什么文件 与ISO镜像文件有什么不同
- 【jdk1.8特性】之Optional
热门文章
- 两年前,梦开始的地方.
- Fedora7安装后的配置
- 制定Windows重要安全计划——12步纲要
- python中open打开路径问题_Python学习笔记之open()函数打开文件路径报错问题
- mysql源码安装linux,Linux下mysql源码安装笔记
- matlab 数值积分 截断误差,几种数值积分算法误差分析(10页)-原创力文档
- python去重命令_关于python去重操作的实例与算法原理演示 2020-12-05
- STL---栈和队列
- mt4 指标 涨跌幅 颜色k线_通达信K线波段操盘指标公式
- 可变车道怎么走不违章_还记得这种车道怎么走吗?