WPF案例 (四) 模拟Windows7桌面任务栏
这个程序模彷了Windows7的桌面任务栏,当在桌面上双击某个快捷方式时,将打开一个新的子界面,并且在任务栏里创建一个链接到此界面的任务栏图标,将鼠标移动到任务栏上的图标时,将Popup出界面的实时图像缩略图,单击任务栏图标时,可让界面最大化或最小化,界面如下所示,源码从这里下载

做这个任务栏界面缩略图时,使用VisualBrush将子界面的实时图像填充到Rectangle
1 Rectangle emptyRectangle = new Rectangle2 {3 Width = 250D,4 Height = 130D,5 Fill = new VisualBrush { Visual = child },6 Margin = new Thickness(2)7 };
又分别使用了两个Border来模彷Windows7任务栏缩略图的圆角
使用圆角
Border visualBorder = new Border
{
BorderBrush = Brushes.Transparent,
BorderThickness = new Thickness(1),
CornerRadius = new CornerRadius(10),
Margin = new Thickness(10),
Height = 150D,
Width = 270D,
Child = emptyRectangle,
HorizontalAlignment = HorizontalAlignment.Center,
VerticalAlignment = VerticalAlignment.Center,
Background = this.FindResource("transparentColor")
};
//对任务栏的Popup界面缩略图的背景应用圆角
Border host = new Border
{
BorderBrush = Brushes.Transparent,
BorderThickness = new Thickness(1),
CornerRadius = new CornerRadius(8),
Child = visualBorder,
HorizontalAlignment = HorizontalAlignment.Center,
VerticalAlignment = VerticalAlignment.Center,
Background = this.FindResource("thumbnailBackground")
};
定义一个ToolTip用来宿主界面的缩略图
ToolTip
ToolTip visualToolTip = new ToolTip
{
Content = host,
Background = Brushes.Transparent,
BorderBrush = Brushes.Transparent,
Placement = PlacementMode.Top,
HorizontalContentAlignment = HorizontalAlignment.Center,
VerticalContentAlignment = VerticalAlignment.Center,
HasDropShadow = false,
VerticalOffset=3
};
//设计ToolTip的Popup延迟时间为20ms
ToolTipService.SetInitialShowDelay(thumbnail, 20);
thumbnail.ToolTip = visualToolTip;
定义事件,子界面关闭时,从任务栏中移除此界面在任务栏上的图标,当在任务栏图标上单击鼠标时,实现界面的最大化或者最小化
定义事件
child.Closed += delegate
{
this.statusBar.Children.Remove(hostBorder);
};
//在任务栏上单击任务图标时,最大化或者最小化子界面
hostBorder.MouseLeftButtonDown += delegate(object sender, MouseButtonEventArgs e)
{
if (e.ClickCount == 1)
{
if (child.WindowState == WindowState.Minimized)
{
//正常显示子界面
child.WindowState = WindowState.Normal;
child.Topmost = true;
}
else
//最小化子界面
child.WindowState = WindowState.Minimized;
}
};
这个程序实现起来很简单,但需要注意的是往任务栏里添加子界面任务栏图标时,应该以从上往下的顺序添加,这样可以避免重复Rendering 逻辑树的子叶点,
WPF案例 (四) 模拟Windows7桌面任务栏的更多相关文章
- WPF案例 (三) 模拟QQ“快速换装"界面
原文:WPF案例 (三) 模拟QQ"快速换装"界面 这个小程序使用Wpf模拟QQ快速换装页面的动画特效,通过使用组合快捷键Ctrl+Left或Ctrl+Right,可实现Image ...
- WPF案例(-)模拟Windows7 Win+Tab切换
原文:WPF案例(-)模拟Windows7 Win+Tab切换 一个使用Wpf模拟Windows7 Win+Tab页面切换的小程序,使用快捷键Ctrl+Down或Ctrl+Up在示例程序各个页面元素之 ...
- WPF案例(二)模拟Apple OS 界面前后180度反转
原文:WPF案例(二)模拟Apple OS 界面前后180度反转 我们在设计应用程序界面的时候,为了充分利用界面空间,住住需要灵活的界面布局方式,比如可以在界面正面空间上定义一个Chart,背面空间上 ...
- Android实训案例(四)——关于Game,2048方块的设计,逻辑,实现,编写,加上色彩,分数等深度剖析开发过程!
Android实训案例(四)--关于Game,2048方块的设计,逻辑,实现,编写,加上色彩,分数等深度剖析开发过程! 关于2048,我看到很多大神,比如医生,郭神,所以我也研究了一段时间,还好是研究 ...
- HTML 事件(四) 模拟事件操作
本篇主要介绍HTML DOM中事件的模拟操作. 其他事件文章 1. HTML 事件(一) 事件的介绍 2. HTML 事件(二) 事件的注册与注销 3. HTML 事件(三) 事件流与事件委托 4. ...
- tomcat URL简写案例:模拟站点www.baidu.com的訪问
tomcat URL简写案例:模拟站点 * 实际URL:http://www.baidu.com:8080/myweb/1.html * 实际位置:F:\mywebapps\myweb\1.htm ...
- WPF案例 (六) 动态切换UI布局
原文:WPF案例 (六) 动态切换UI布局 这个Wpf示例对同一个界面支持以ListView或者CardView的布局方式呈现界面,使用控件ItemsControl绑定数据源,使用DataTempla ...
- WPF案例 (五) 对控件界面使用倒影
原文:WPF案例 (五) 对控件界面使用倒影 在这个程序里对5个2D控件界面应用了垂直倒影,边缘模糊化和模型变换,在本例中,这5个2D控件为Border, 各包含了一幅Image,界面如下图所示,源码 ...
- Ext js框架模拟Windows桌面菜单管理模板
一款超炫的后台,Ext模拟Windows桌面,Ext经典浅蓝风格,功能非常强大,包括最大化.最小化.状态栏.桌面图标等,不过需要非常懂Ext脚本的才可驾驭它. 1.图片 2. [代码][HTML] ...
随机推荐
- Swift - 访问通讯录联系人(使用系统提供的通讯录交互界面)
1,通讯录访问介绍 通讯录(或叫地址簿,电话簿)是一个数据库,里面储存了联系人的相关信息.要实现访问通讯录有如下两种方式: (1)AddressBook.framework框架 : 没有界面,通过代码 ...
- EasyUI - SearchBox 搜索框
效果: html代码: <input id="ss"/> <div id="mm"> <div data-options=&quo ...
- 【C语言】超大数乘法运算
昨天做排列组合的时候遇到A(a,b)这个问题,需要计算A(20,20)超大,计算机32位的,最大数只能是2^32,这让我很悲伤! 于是乎就自己研究了如何进行超大数的计算! /************* ...
- axure母版(模板)区域介绍
axure的模板区域是非常重要的一个功能,网站的头部.尾部部分等很多页面同时用到的内容,都可以使用母版,因为在母版中只需要修改一次,就可以实现所有的页面更新,可以大大的加速原型的制作速度.需要重复理解 ...
- HTML语言简单回顾
简单复习一下html语言. html的基本结构如下: <html> <head> <title></title> </head> <b ...
- static作用
C程序一直由下列部分组成: 1)正文段——CPU运行的机器指令部分:一个程序仅仅有一个副本:仅仅读,防止程序因为意外事故而改动自身指令: 2)初始化数据段(数据段)——在程序中全部 ...
- RobotFramework 自定义Library
RobotFramework 主要使用Python,这里简单自定义Library,以扩充RobotFramework的功能 新建一个python类,自定义需要的方法 例如: 保存成TestLibrar ...
- mac 修改系统配置参数 主机名 等
mac 修改系统配置参数,可以使用 命令 scutil 参考网址: https://developer.apple.com/library/mac/documentation/Darwin/Refer ...
- hdoj 2066 一个人的旅行 【多源多汇最短路】
题目:hdoj 2066 一个人的旅行 方法:缩点 + 最短路 分析:看了大神的一篇博客,讲冗余压缩的,然后就想找一个多源最短路练练手. 这个题目就是典型的多源多汇最短路 方法:把全部的源点压缩成一个 ...
- JSP中两种include的区别
首先说明这两种都是什么: <%@ include file=”relativeURI”%> 可以叫作静态include(静态包含),是jsp指令中的一种,(JSP指令控制JSP编译器如何去 ...