WPF—QQ界面(五):QQ好友分组列表的效果实现 及 截稿

效果分析:

1、鼠标左键单击 分组 的组名,能够弹出一个下拉列表,并且左边的向右箭头转成向下;

2、弹出的下拉列表中包含好友的头像,好友的昵称,还有好友的个性签名或最新动态;

3、当鼠标移到好友这一行,能够将一行的背景色置蓝或置橙;

4、当鼠标移到好友的头像上,能够悬浮显示好友的个人信息。

除了这些基本的效果,还有很多效果蕴含其中。。。。感觉分组列表的效果最难做。

我大致做出了那样的效果,很不美观。没达到一样的效果,就不分析思路了,以免误人子弟。

用的是ScrollViewer

前台:

<ScrollViewer VerticalScrollBarVisibility="Auto" Margin="8,0,10,10" Background="Transparent">
                <ScrollViewer.Content>
                    <StackPanel Width="230" Orientation="Vertical" HorizontalAlignment="Left" VerticalAlignment="Top" Name="FriendListControl"/>
                </ScrollViewer.Content>
            </ScrollViewer>

后台:

private void Window_Loaded(object sender,RoutedEventArgs e)
        {
            Test.GetGroupList().ToList().ForEach(s =>
            {
                Expander t = new Expander();
                t.Header = s;
                t.HeaderTemplate = this.FindResource("ExpanderHeaderTemplate") as DataTemplate;
                ListView v = new ListView();
                v.ItemsSource = s.Children;
                v.Width = 280;
                v.BorderThickness = new Thickness(0);
                v.ItemTemplate = this.FindResource("FriendList") as DataTemplate;
                v.SelectionMode = SelectionMode.Single;
                t.Content = v;
                FriendListControl.Children.Add(t);
                //object obj = this.FindResource("TextBlockStateStyle");

            });
        }

后台代码中出现了几个自定义的资源字典,包括 ExpanderHeaderTemplate  和  FriendList 。

资源字典 (ResourceDictionary)代码如下:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <DataTemplate x:Key="FriendList">
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="20"/>
                <RowDefinition Height="20"/>
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="40"/>
                <ColumnDefinition Width="130"/>
            </Grid.ColumnDefinitions>
            <Image Grid.Column="0" Grid.RowSpan="2" Source="NewFolder/basicQQ.jpg"/>  <!--好友列表的头像图片-->
            <TextBlock Text="{Binding Path=Name}" Margin="5,1,0,1" Grid.Column="1" Grid.Row="0" TextAlignment="Left"/>
            <TextBlock Text="{Binding Path=Signature}" Margin="5,1,0,1" Grid.Column="1" Grid.Row="1" TextAlignment="Left"/>
        </Grid>
    </DataTemplate>
    <DataTemplate x:Key="ExpanderHeaderTemplate">
        <WrapPanel>
            <TextBlock Text="{Binding Path=Name}" TextAlignment="Left"></TextBlock>
            <TextBlock Text="[" TextAlignment="Left"></TextBlock>
            <TextBlock Text="{Binding Path=OnlineFriendNum}" TextAlignment="Left"></TextBlock>
            <TextBlock Text="/" TextAlignment="Left"></TextBlock>
            <TextBlock Text="{Binding Path=TotalFriendNum}" TextAlignment="Left"></TextBlock>
            <TextBlock Text="]" TextAlignment="Left"></TextBlock>
        </WrapPanel>
    </DataTemplate>
    <Style x:Key="TextBlockStateStyle" TargetType="{x:Type TextBlock}">
        <Setter Property="FontFamily" Value="宋体"/>
        <Setter Property="FontSize" Value="18"/>
        <Setter Property="Foreground" Value="#FF000000"/>
        <Style.Triggers>
            <Trigger Property="IsMouseOver" Value="True">
                <Setter Property="BitmapEffect">
                    <Setter.Value>
                        <OuterGlowBitmapEffect GlowSize="3" GlowColor="#FFFFFF"/>
                    </Setter.Value>
                </Setter>
            </Trigger>
        </Style.Triggers>
    </Style>
</ResourceDictionary>

最后那个 DataTemplate 多余了,TextBlockStateStyle 请自行忽略。

最后附上我在github上的源码地址:https://github.com/Danieldong0802/QQpresentation

虽是半成品,也是花上我这个初学者的好多时间才完成的,很多不足之处,望各位前辈指教!

时间: 2024-08-24 18:43:39

WPF—QQ界面(五):QQ好友分组列表的效果实现 及 截稿的相关文章

WPF防止界面卡死并显示加载中效果

原文:WPF防止界面卡死并显示加载中效果 网上貌似没有完整的WPF正在加载的例子,所以自己写了一个,希望能帮到有需要的同学 前台: <Window x:Class="WpfApplication1.Loading" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml

SlideMenu(老版本QQ好友分组列表样式)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>SlideMenu</title&g

可在广域网部署运行的QQ高仿版 -- GG2014 完美版!新增支持:聊天记录、好友分组、托盘闪动消息提醒、登录状态、GIF动态表情

距上次GG V3.7版本(可在广域网部署运行的QQ高仿版 -- GG叽叽V3.7,优化视频聊天.控制更多相关细节)的发布,已经有50天了,这50天对于GG来说,是一个重大的飞跃.因为这段时间通过一些基于GG的实战项目,发现了GG的很多bug和不足之处,我都一一做了修正,并增加了一些基础且必须的功能.这次发布的是GG V4.0版本,又称为GG 2014. 记得在GG早期版本时,园子里的吉日兄跟我留言说:"GG完全不能正式使用......",那时我还不是很服气,后来当我基于GG开发正式项目

基于Qt的类似QQ好友列表抽屉效果的实现

前段时间在忙毕业设计,所以一直没有更新博客.今天答辩完以后,将对我的毕业设计进行模块展示,供Qt初学者进行参考. 毕业设计题目:Linux系统下基于Qt的局域网即时通信系统设计与实现 其中我有一个类似于QQ的好友列表,然后对好友可以进行分组管理,毕设中具体效果图如下: 网上查寻到的设计思路: 1.采用QToolBox的方式,虽然看起来有点样子,但是并不是我们所熟悉的好友列表,比如:http://blog.csdn.net/qianguozheng/article/details/6719074

Android 利用ExpandableListView显示和查询仿QQ分组列表用户信息

在我们的项目开发过程中,经常会对用户的信息进行分组,即通过组来显示用户的信息,同时通过一定的查询条件来显示查询后的相关用户信息,并且通过颜色选择器来设置列表信息的背景颜色. 其中借鉴xiaanming:http://blog.csdn.net/xiaanming/article/details/12684155 下面来看看项目运行后的效果图以及代码结构图: 下面通过代码来实现整个效果. 1.主界面布局activity_main.xml <span style="font-size:18px

WPF—QQ界面(一):QQ界面的整体布局

15年6月底初学C#的WPF,在此之前对软件编程行业基本上相当于小白,从此漫漫程序路. 把C#的基本语法看了一遍,高级教程还没看,在师兄的提点下,开始尝试着写QQ的界面. 先将界面包含的各个效果分块写成随笔,期间遇到各种问题,要么请教师兄.同学,要么上网查阅大牛们写的博客(此后所有的文章中若有冒犯,请私信),如文中出现不当或者不够优化的代码,望广大博友积极指出,谢谢! 编译环境:windows 8.1 + VS2013 先上效果图: 整体布局我采用Grid来做,将整个界面分成9行(其中两行是空的

WPF如何用TreeView制作好友列表、播放列表(转)

WPF如何用TreeView制作好友列表.播放列表 前言 TreeView这个控件对于我来说是用得比较多的,以前做的小聊天软件(好友列表).音乐播放器(播放列表).类库展示器(树形类结构)等都用的是TreeView,下面以一个好友列表为例,说明一下制作过程,这个过程可以搬迁到其他类似的场景中去(树形结构的场景). 结果展示 制作过程 一:新建一个WPF工程,我命名为TreeViewDemo.(这步不解释) 二:准备图片,就是系统头像.在工程中新建一个Heads文件夹,并且添加系统头像图片,最后不

QQ界面及简单操作实现

主要功能: 1.实现QQ好友界面: 2.点击QQ好友图标,可以打开对应的聊天对话框: 说明:聊天对话框的界面即为上次所描述的UDP的实现界面,略有改动: 整体程序操作分析: 1.qq好友界面作为主操作界面,从数据类中添加好友头像,好友名字等信息,点击主操作界面上的好友,能够打开聊天对话框类: 2.添加好友头像,好友名字等信息的行为是相同的,建立一个新的类,只需要留出接口即可: 3.聊天对话框类中,好友信息不一致以外,聊天的连接是一致的,同样可以留出接口,建立新的类: qq好友界面: 1.目前分组

iOS 实现QQ界面

应师傅要求编写个QQ界面来不吝赐教下我的代码问题. 编写个QQ界面.有三个组,每一个组有人.并显示在线不在线. 先看一下效果图 这里省了事由于我的图片仅仅用了一张.假设要依据人的不同设置,仅仅要在cell里面改一下即可了: 主要是实现点击上面分组展开内容,再点击收回去. 废话不多说,上菜: 我们先来构造数据: NSArray * InitArray [email protected][ @{ @"Name":@"朋友", @"Group":@&q