WPF 模仿QQ音乐首页歌单效果

qq音乐桌面版做的效果感觉很不错,今天就模仿一下它首页歌单的效果,从简单做起。。。

看一下效果:

,其实也很简单,就是布局和动画,触发器。。。还用到了ItemsControl

下面就看看代码:

MainWindow的xaml代码:

<Window x:Class="WPFDemos.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:WPFDemos"mc:Ignorable="d"x:Name="widnow"WindowStartupLocation="CenterScreen"Title="title" Height="570" Width="1000"><Window.Resources><RectangleGeometry x:Key="clip" Rect="0 0 165 165" RadiusX="10" RadiusY="10"/><Style TargetType="ItemsControl" x:Key="style1"><Setter Property="FontFamily" Value="微软雅黑"/><Setter Property="FontSize" Value="13"/><Setter Property="ItemTemplate"><Setter.Value><DataTemplate DataType="Item"><StackPanel Margin="10"><Border x:Name="border" CornerRadius="10" ClipToBounds="True" Background="Transparent" Width="165" Height="165" Clip="{StaticResource clip}"><Grid><Image Source="{Binding ImgPath}" Stretch="UniformToFill"/><Border x:Name="play" Background="#77000000" Visibility="Collapsed"><Viewbox Width="50" Height="50" x:Name="viewbox"><Path x:Name="playIcon" Fill="White" Data="M512 5.12C231.936 5.12 5.12 231.936 5.12 512s226.816 506.88 506.88 506.88 506.88-226.816 506.88-506.88-226.816-506.88-506.88-506.88z m214.528 524.288L445.44 755.2c-14.336 11.776-35.84 1.536-35.84-16.896V285.696c0-18.432 21.504-28.672 35.84-16.896l281.088 226.304c10.752 8.704 10.752 25.088 0 34.304z"/></Viewbox></Border><Border x:Name="countTip" Background="#1F1018" HorizontalAlignment="Right" VerticalAlignment="Bottom" Margin="10" CornerRadius="11" Padding="7 3"><StackPanel Orientation="Horizontal" VerticalAlignment="Center"><Viewbox Width="16" Height="16"><Path Fill="White" Data="M899.729695 470.846718c0.775666-9.406231 1.726318-18.811438 1.726318-28.41926 0-207.385281-174.362166-375.516536-389.456013-375.516536-215.08873 0-389.456013 168.130232-389.456013 375.516536 0 9.643638 0.945535 19.013029 1.726318 28.41926-34.059724 19.031449-57.360406 55.004755-57.360406 96.789417l0 166.902264c0 61.440327 49.821709 111.255897 111.274316 111.255897 0 0 111.375623 0.183172 111.274316 0 59.120492-2.62171 111.268176-51.466162 111.268176-111.255897L400.726707 567.637158c0-61.458747-49.815569-111.292736-111.268176-111.292736 0 0-104.131639 0-111.274316 0 0-194.441481 149.45387-333.822948 333.816808-333.822948s334.99975 138.190339 333.816808 333.822948c-0.022513 4.730745-111.268176 0-111.268176 0-61.457724 0-111.274316 49.833989-111.274316 111.292736l0 166.902264c0 59.789735 52.147684 108.634186 111.274316 111.255897-0.102331 0.183172 55.634088 0 55.634088 0l0 83.47825c0 15.328104 12.456706 27.813462 27.817556 27.813462 15.365966 0 27.817556-12.486382 27.817556-27.813462l0-83.47825c61.457724 0 111.274316-49.815569 111.274316-111.255897L957.093171 567.637158C957.090101 525.851473 933.789419 489.87919 899.729695 470.846718z"/></Viewbox><TextBlock Margin="2 0" Text="{Binding Count,StringFormat={}{0}万}" Foreground="White" FontSize="12" VerticalAlignment="Center"/></StackPanel></Border></Grid></Border><TextBlock x:Name="title" Text="{Binding Title}" Margin="0 10"/></StackPanel><DataTemplate.Triggers><EventTrigger RoutedEvent="MouseEnter" SourceName="border"><BeginStoryboard ><Storyboard><ThicknessAnimation Duration="0:0:0.1" To="0 -8 0 8" Storyboard.TargetProperty="Margin" Storyboard.TargetName="border"/></Storyboard></BeginStoryboard></EventTrigger><EventTrigger RoutedEvent="MouseLeave" SourceName="border"><BeginStoryboard ><Storyboard><ThicknessAnimation Duration="0:0:0.1" To="0 0 0 0" Storyboard.TargetProperty="Margin" Storyboard.TargetName="border"/></Storyboard></BeginStoryboard></EventTrigger><Trigger Property="IsMouseOver" Value="True" SourceName="border"><Setter Property="Visibility" Value="Visible" TargetName="play"/><Setter Property="Visibility" Value="Collapsed" TargetName="countTip"/></Trigger><Trigger Property="IsMouseOver" Value="True" SourceName="viewbox"><Setter Property="Fill" Value="#1ECE9C" TargetName="playIcon"/></Trigger><Trigger Property="IsMouseOver" Value="True" SourceName="title"><Setter Property="Foreground" Value="#1ECE9C" TargetName="title"/></Trigger></DataTemplate.Triggers></DataTemplate></Setter.Value></Setter>
</Style></Window.Resources><StackPanel Margin="10 30"><TextBlock Text=" 你的歌单保藏库" FontSize="23" FontFamily="微软雅黑 "/><ItemsControl ItemsSource="{Binding Items,ElementName=widnow}" Style="{StaticResource style1}"><ItemsControl.ItemsPanel><ItemsPanelTemplate><WrapPanel Orientation="Horizontal"></WrapPanel></ItemsPanelTemplate></ItemsControl.ItemsPanel></ItemsControl></StackPanel>
</Window>

 

MainWindow的后台代码:

using System.Collections.Generic;
using System.ComponentModel;
using System.Windows;namespace WPFDemos
{public partial class MainWindow : Window, INotifyPropertyChanged{public MainWindow(){InitializeComponent();DataContext = this;Items = new List<object>(){new Item{ ImgPath=@"D:\bizhi\清纯\6-9.jpg",Title="音乐时节 | 秋分",Count=138.6},new Item{ ImgPath=@"D:\bizhi\清纯\9-7.jpg",Title="中文小清新 | 恋爱告白的甜蜜",Count=9.5},new Item{ ImgPath=@"D:\bizhi\清纯\9-8.jpg",Title="学习工作阅读 | 柔和静心の轻",Count=1641.7},new Item{ ImgPath=@"D:\bizhi\清纯\2-5.jpg",Title="[韩语快歌]提神醒脑必备",Count=1257.4},new Item{ ImgPath=@"D:\bizhi\清纯\3-1.jpg",Title="古风:韶华白首,不过浮生一阙",Count=123.4},new Item{ ImgPath=@"D:\bizhi\清纯\23-9.jpg",Title="学习工作阅读 | 柔和静心の轻",Count=191.4},new Item{ ImgPath=@"D:\bizhi\清纯\28-6.jpg",Title="学习工作阅读 | 柔和静心の轻",Count=676.5},new Item{ ImgPath=@"D:\bizhi\清纯\28-1.jpg",Title="[韩语快歌]提神醒脑必备",Count=676.5},new Item{ ImgPath=@"D:\bizhi\清纯\32-4.jpg",Title="学习工作阅读 | 柔和静心の轻",Count=676.5},new Item{ ImgPath=@"D:\bizhi\清纯\34-8.jpg",Title="古风:韶华白首,不过浮生一阙",Count=676.5},};}public event PropertyChangedEventHandler PropertyChanged;private List<object> _items;public List<object> Items{get { return _items; }set{_items = value;PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(Items)));}}}public class Item{public string ImgPath { get; set; }public string Title { get; set; }public double Count { get; set; }}
}

完啦,这次为了方便,代码全都放在这两个文件里了。。

效果图:

【文中素材图片来源于网络,侵删】

号外:

为了方便WPF爱好者交流经验,我建了个群,有兴趣的可以加一下哦,

加不上的小伙伴,可以加我微信,我拉你进群~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/302390.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

收藏 : 50个Excel逆天功能,一秒变“表哥”

全世界只有3.14 % 的人关注了数据与算法之美Excel的50个逆天功能&#xff0c;动画教程珍藏版&#xff01;先看几个简单的&#xff1a;1、自动筛选2、在Excel中字符替换3、在Excel中冻结行列标题4、在Excel中为导入外部数据5、在Excel中行列快速转换6、共享Excel工作簿7、在Exce…

实战~~整个网络无法浏览,提示网络不存在或者尚未启动

今天早上接到同事的电脑&#xff0c;说其他人访问不到他的电脑&#xff0c;他电脑上有文件要共享才能进行工作~~故障现象&#xff1a;能上网&#xff0c;能PING通其他电脑&#xff0c;但是通过网上邻居和IP不能访问其他电脑上的资源。 这是在故障本机上的提示~~ 这是其他工作站…

python ctp接口_使用ctp的python接口

在github上查到一个项目ctpwrapper在按照文档按照的时候报错>>>pip install cython --upgrade>>>pip install ctpwrapper --upgrade在安装第二个命令的时候第一个问题安装yum install -y gcc-c 解决第二个问题ctpwrapper/MdApi.cpp:39:20: 致命错误:Python.h…

C# 并行和多线程编程——认识和使用Task

对于多线程&#xff0c;我们经常使用的是Thread。在我们了解Task之前&#xff0c;如果我们要使用多核的功能可能就会自己来开线程&#xff0c;然而这种线程模型在.net 4.0之后被一种称为基于“任务的编程模型”所冲击&#xff0c;因为task会比thread具有更小的性能开销&#xf…

Facebook上的一道题,超过50万的评论和1万3500次分享

全世界只有3.14 % 的人关注了数据与算法之美近日&#xff0c;有网友在Facebook发了一道数学题&#xff1a;发布以后&#xff0c;目前已经收到超过50万的评论和1万3500次分享&#xff0c;图中包含四个等式&#xff0c;前面三个已经有答案了&#xff0c;最后一个问题要求你得出相…

从数学入手,3招打破机器学习的边界

全世界只有3.14 % 的人关注了数据与算法之美本文约2007余字&#xff0c;阅读需要约6分钟&#xff1b;系统资料领取见文末&#xff1b;关键词&#xff1a;人工智能&#xff0c;机器学习&#xff0c;深度学习&#xff0c;数学&#xff0c;学习建议01.机器学习工程师的边界是什么&…

.NET Core 基于 Grafana Loki 日志初体验

介绍Loki: like Prometheus, but for logs.Loki是一个轻量级的日志系统&#xff0c;受到Prometheus项目的启发&#xff0c;由Grafana团队设计和开发&#xff0c;所以在Grafana中是原生支持的&#xff0c;具有可水平扩展&#xff0c;高度可用等特性&#xff0c;通过存储压缩的、…

基于开源流程引擎Activiti5的工作流开发平台BPMX3

2019独角兽企业重金招聘Python工程师标准>>> BPMX3平台是宏天软件在ESTBPM2的基础上&#xff0c;追随开源工作流平台Activiti5&#xff0c;由原班开发团队&#xff0c;历时一年&#xff0c;现重新推出一套解决中国政府及企业的业务流程的开发平台。 相对商业的工作流…

通过Dapr实现一个简单的基于.net的微服务电商系统(十)——一步一步教你如何撸Dapr之绑定...

如果说Actor是dapr有状态服务的内部体现的话&#xff0c;那绑定应该是dapr对serverless这部分的体现了。我们可以通过绑定极大的扩展应用的能力&#xff0c;甚至未来会成为serverless的基础。最开始接触dapr的时候&#xff0c;会在其官方首页看到这么一句话“Dapr is a portabl…

三位一体,用游戏打通孩子记忆力、认知和双语启蒙的学前神器

对于孩子学习知识&#xff0c;现在父母多表现有2个极端&#xff0c;一种完全不让小小孩学硬知识&#xff0c;一种又希望孩子从很小开始就学硬知识。小木比较反对在孩子6岁前就给他们生硬地灌输知识&#xff0c;一定得认识多少个字&#xff0c;背多少个单词&#xff0c;但只要做…

分享一个CSS3的网格系统架构 - ResponsiveAeon

日期&#xff1a;2012-7-30 来源&#xff1a;GBin1.com 在线演示 本地下载 曾经介绍过其它类型的CSS3网格系统&#xff0c;今天我们介绍一款能够帮助你快速创建基于HTML5/CSS3的响应式布局框架 - ResponsiveAeon。 它拥有一个宽度为1104px并且基于12个列的网格框架系统&#…

网络协议,没有想象中那么难

十个人程序员里面&#xff0c;有十个都会说自己学过网络协议&#xff0c;九个人都会说自己懂网络协议。但是面试的时候&#xff0c;问几个问题&#xff0c;能回答的可能只有两三个。不信&#xff1f;来&#xff0c;我问你几道。1、TCP 协议跟 UDP 协议有什么区别&#xff1f;你…

Mysql实现幂等_阿里面试官:接口的幂等性怎么设计?

大家好&#xff0c;我是狂聊。自己最近负责的几个接口&#xff0c;都涉及到了幂等性的操作&#xff0c;抽空总结了一下&#xff0c;这也是面试官比较爱问的问题。一、什么是幂等?看一下维基百科怎么说的&#xff1a;幂等性&#xff1a;多次调用方法或者接口不会改变业务状态&a…

谷歌搜索揭示人性最黑暗的秘密

全世界只有3.14 % 的人关注了数据与算法之美《卫报》网站发布文章指出&#xff0c;我们能够从我们在网上问的问题获得对自己更多的了解呢。美国数据科学家塞斯斯蒂芬斯-大卫多维茨&#xff08;Seth Stephens-Davidowitz&#xff09;通过分析谷歌的匿名搜索数据&#xff0c;揭示…

杂集

为什么80%的码农都做不了架构师&#xff1f;>>> 符号相关快捷键: 千分符号&#xff1a;alt 0137 (小键盘) 回车符号&#xff1a;alt 10&#xff08;小键盘&#xff09; 查看目录结构&#xff1a;进入windows concole&#xff0c;执行命令tree 转载于:https://my.o…

接口管理平台YApi

介绍YApi 是高效、易用、功能强大的 api 管理平台&#xff0c;旨在为开发、产品、测试人员提供更优雅的接口管理服务。可以帮助开发者轻松创建、发布、维护 API&#xff0c;YApi 还为用户提供了优秀的交互体验&#xff0c;开发人员只需利用平台提供的接口数据写入工具以及简单的…

saiku 连接 MySQL_Saiku连接mysql数据库(二)

Saiku连接Mysql数据库展示数据参考链接&#xff1a;https://www.cnblogs.com/shirui/p/8573491.html前提&#xff1a;Saiku已安装好&#xff0c;mysql已安装好1.添加Saiku的数据库驱动&#xff1a; mysql-connect-java-5.1.17.jar下载相应的数据库驱动放到 saiku-server\tomcat…

TreeView控件应用--访问文件或文件夹(一)

C#用TreeView访问文件或文件夹&#xff0c;通过递归&#xff0c;展开所有文件夹&#xff08;类似资源管理器的树形窗体&#xff09; 首先&#xff0c;算法是用递归算法&#xff0c;不断的递归文件。以此来遍历整个电脑的磁盘内容&#xff0c;过程也很简单。这种算法的时间复杂度…

凭自己本事单的身是一种怎样的体验?你根本配不上如此优秀的我!

全世界只有3.14 % 的人关注了数据与算法之美8月12号&#xff0c;微博网友烂剧斗士发了这么一条微博&#xff0c;称“看脱口秀大会这个哥没把我给笑死”。一位从事IT&#xff08;黑客&#xff09;的小哥哥&#xff0c;是这样回忆自己的求爱经历的↓↓#她根本配不上我这么聪明的男…

WPF 右下角弹窗的简单实现

软件中经常出现右下角弹窗&#xff0c;从下面缓缓弹出的&#xff0c;这次就做个简陋的实现&#xff0c;思路就是在窗口加载和关闭时执行动画DoubleAnimation今天懒得做界面了&#xff0c;只实现了功能。看看效果&#xff1a;下面看看代码&#xff1a;主窗口添加一个按钮 &#…