摘要:
本来就想要得到的东西自不必说,自然要努力争取。但是还有很多自己可以得到,但是可能并没有多大兴趣的东西,其实也应当努力争取。比如养老金、工龄、劳动资格证和职称。 是的,没有人指望着以后真的用养老金去养老,或者根本没有把这点福利放在眼里。你不要,人保部才高兴呢。如果你觉得福利本来就少,就更应该珍惜。如果仅仅“珍惜”这个词不足以感染你的话。请看下面的分析。 1. 请把眼光放得长... 阅读全文
2010年7月6日
2010年5月30日
摘要:
WPF支持Alpha通道,还有什么必要指定色透明呢?如果是新写的系统,那没有必要。但是如果是老系统移植到WPF平台上,而之前的图片都是基于纯绿为透明色,而且又不想花时间改呢?最简单的方法就是在WPF这一层,处理指定色透明的问题。一个思路是用Converter,把图片中的指定颜色替换成透明色就可以了。但是如果图片比较大,或是比较多的时候,CPU的负担就会很重。所以这种像素级的事情应该交给GPU来做,... 阅读全文
2010年5月27日
摘要:
这里我们主要讨论这个焦点虚框的摆放位置。有人可能要说这个就用系统自定义的位置不是挺好的吗?而且改起来又麻烦。 没有错,系统默认位置很好很强大,但是如果在别的技术实现中就不一定了。比如让我又爱又恨的WPF。 我们看看非WPF的CheckBox的虚框在什么地方。 如果使用的Windows 7系统,请依下面的步骤开启Access Key的默认显示功能。这个功能的另一个效果就是点在Focusable... 阅读全文
2010年5月25日
摘要:
我们来看看Windows系统中的Aero风格的Tree是什么样子的。 上面这样都是系统中非WPF实现的Tree。多数Item都有MouseOver,Selected和Selected and Focused三种附加状态。我们再来看看WPF中的TreeView在默认情况的是什么样子的。相信大家一眼就可以看出来,这明明就是XP风格的嘛。和Aero风格的Tree差距实在是太大了。而且问题很严重。下面列... 阅读全文
2010年3月24日
摘要:
在WPFBug清单12中我们介绍过一个与不同WPF版本上XAML解析相关的Bug。今天要介绍另一个.NET Framework 4对于XAML解析上的改进。我们知道Button属于ContentControl,ContentControl里的Content逻辑上可以是任何其它Control。所以我们可以把Button的Content设置为一个Image。这也是一个很常见的功能。代码如下所示:[代码... 阅读全文
2010年3月19日
摘要:
在上一篇Blog中指出了ListView在没有Items时,即使Header超出了控件范围,水平滚动条也不会出现的问题。由于篇幅和时间所限,没有给出解决方案。下面就介绍一种解决方案。具体问题请参考上篇文章,这里就不赘述了。解决这个问题分两个步骤:1. 把Header放到ScrollViewer中可以Scroll的部分里。2. 让Header在拖动垂直滚动条时不动。(难点,明明在ScrollView... 阅读全文
2010年3月18日
摘要:
在VS自动生成的代码中。using语句是放在最上面的。但是无论从代码维护的角度还是从代码语义的角度,using都应该放在namespace的内部。从语义来说:using什么东西,只与代码内容有关,与namesapce的名称无关。如果把using 放在最上面,然后再写namespace。就相当于让namespace把一个语义上相关的整体割裂开了。从代码维护的角度:如果我们要Copy, Paste整个... 阅读全文
摘要:
今天工作的时候说起这个问题,我才发现的。不然我一直都没有注意这么细节的东西。首先,不要看别的地方,就看这个文章。眼睛不要转。否则很不小心就会看到答案的。问题:这个放大镜的把,是朝左下的,还是朝右下的。想好答案之后,看看IE(7 or later)或是Opera(10.5 or above)的右上角的搜索框。(别的浏览器大家可自行验证)看看Windows(Vista or later)的开始菜单和E... 阅读全文
2010年3月17日
摘要:
我们知道ListView在内容超出控件本身范围时,默认会把滚动条显示出来。这个内容,显然应该包括Head和Items两个部分。无论哪个部分超出了,都应该把水平滚动条显示出来。ListView的Bug就在于,当ListView中没有Item,且Headr的总长超过ListView本身时,水平滚动条没有出现。这个Bug很好重现。代码如下: <Grid x:Name="LayoutRoot">... 阅读全文
2010年3月13日
摘要:
今天去了趟北京图书大厦。想去找找Inside SQL Server 2005 T-SQL Programming。这里的分类还是很好的,很快就确认了,没有我找的书。于是闲逛了起来,无意中,发现在一个分类与WPF毫无关系的地方,发现了几本WPF的书,左右再没有别的WPF书了。然后又转了一会,又发现在另一个与WPF毫无关系的地方,也有几本WPF的书。WPF书少得可怜,而且也是随意地分类放着。给人一种强... 阅读全文
摘要:
手里头有俩群,一直闲着没有啥用途。想试着建立一个交流学习WPF与用户体验、交互设计方面的小团体。平时可以交流下心得或是解答一些问题什么的。比博客要方便一些。群号是:2·5·1·6·0·5·0,欢迎有兴趣的朋友们加入。目前群尚处于起步阶段,还没有什么实质性的计划或是活动或是风格。也希望朋友们多提些建议。 阅读全文
2010年3月5日
摘要:
第一个问题,WPF最简单的常用控件是什么?(先声明Path不算控件)无论从控件的功能还是从控件的外观来看,最简单都是那个在菜单和Ribbon里很常见的分隔线。没错,它已经从WinForm里的一个字符串(-)进化成一个独立控件(Separator)了。Separator继承于Control,而且没有添加一个属性或事件。当仁不让地成为了WPF中最简单控件的首选。其全部Style代码如下所示: <... 阅读全文
2010年3月3日
摘要:
如果要做下面这样的一个东西作为背景。你会如何做呢?图1. 目标背景效果方案一,用PS画出来。然后把这个PNG图片作为背景色。这个方案可以,但是如果想让这个线的颜色可配置呢?如何线的粗细不确定呢?无论哪个问题,用像素图的方式都不好解决。方案二,用WPF的矢量图绘制。这个方案可以比较容易地解决上面两个问题。但是无论我们用哪种方式,都不会把整个图的大小画出来。而是画是一个最小的图元,然后重复。标量图方案... 阅读全文
2010年3月2日
摘要:
用Blend做Visual Design,常常会遇到不知道如何往ListView里放假数据的问题。这时提供一种方法。供大家参考。如果有更简单的方法,也希望大家不吝赐教。代码如下:代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--<Windowx... 阅读全文
2010年2月26日
摘要:
如何真懂的话。初中几何就够了。题目很简单。在不明显改变Geometry视觉效果的提前下,请简化下列代码。并简述简化后的代码与原代码有什么不同?<StreamGeometry x:Key="SomeTexture">M0,2 L1,2 1,3 0,3Z M1,1 L2,1 2,2 1,2 z M2,0 L3,0 3,1 2,1 Z M3,5 L4,5 4,6 3,6 Z M4,4 L5,... 阅读全文
2010年2月21日
摘要:
充分利用界面上的空间,是优秀软件界面布局设计的原则之一。如果布局上出现了大片的空白区域就会给人一种浪费和不谐调的感觉。如下图所示。 我们把ListBox的ItemsPanel设置为一个WrapPanel。让里面的Items可以自动折行。但是这样在ListBox的右侧,会出现一块空白区。很多情况下,我们对于Item的大小并不很在意,这时我们会更希望Item的宽度可以随着整体宽度自动地调节。产生如下... 阅读全文
2010年2月20日
摘要:
在上一篇中,介绍了如何实现类似QQ中分组面板的功能。这一次将介绍如何用另一种方式实现这个功能,并添加动画效果。 在上一篇所介绍的方式中,主要的技术点其实就是那个作为ItemsPanel的自定义Panel。然而这种实现方式有两个主要缺点。1. 没有了Virtualizing的效果。虽然没有不可见项。2. 不便于添加动画效果。这里将向大家介绍另一种实现方式。就是用Blend 3中非常火爆的Behavi... 阅读全文
2010年2月12日
摘要:
要实现的面板的效果如下图所示: 一个面板打开了,其它的面板会自动收起。而且打开的面板会填充所有可用空间。那么这样的效果在WPF里应该如何实现呢? 1. 多个面板,排成一排,感觉可以用ListBox。 2. 然后里面的东西,点一下打开,再点一下收起。感觉就是一个Expander嘛。 3. 一个打开,其它所有的收起。可以把Expander的IsExpanded与SelectedItem绑定。 ... 阅读全文
2010年2月9日
摘要:
考虑下面这样的界面布局。 对于这个小窗口而言,东西少。可以把窗口定死在500*300这样。但是如果这个表单是属于一个大窗体的一个部分。情况就比较复杂了。 我们并不能把窗口定死大小。因为窗口有可能会需要在1920*1200到1024*768等不同的分辨率下运行。这样这个表单在不同情况下的大小就有可能有很大的差别。 一个比较好的方案是,当窗口变小,第一行放不下所有控件时。换到第二行。当窗口变大,第一行... 阅读全文
2010年2月4日
摘要:
我们都知道在WPF中,所有的控件都有Resources属性,里面可以放Resource。一般比较常用的Resource位置就是Application的Resource和各个Window的Resource。那么这两个Resource的位置,除了作用范围不同之外,还有什么不同呢? 一个不同点就是,Application的Resource会被作用一个全局共享的Resource的来源。这会给Merge R... 阅读全文
2010年1月26日
摘要:
在WPF中,所有的ItemsControl都可以将ItemsSource绑定到后台的数据源上。一般情况下,会将这个ItemsSource直接绑定到一个ObservableCollection上。比如我们要做一个旅游线路选择的界面。有两个ComboBox用来选择旅游的出发地和目的地。假设Province类中有一个静态的列表包含了中国所有的省份名称。一般就会把这两个ComboBox的ItemsSour... 阅读全文
2010年1月20日
摘要:
我们都知道WPF的Transform有很多种,比如ScaleTransform,RotateTransform什么的。而且从纯粹的数学角度来讲,这些Transform的组合,可以完全任何二维线性图形变换。完全没有必要自己再去写一个。但是纯数学,总是纯数学的。比如我想做这样一个Transform,它总是把控件扩大10个像素。目前没有能直接做到这个效果的Transform。有人说直接把Width + ... 阅读全文
2010年1月18日
摘要:
WPF自带的Pane很多,但是功能都过于基本。对于一些常见功能的支持都不是很方便。下面的一些情况应该有不少人都遇到过。 1. Panel里的Item之间有一个Margin。但是要对最后一个或第一个Item特别处理:它不需要这个Margin。2. 窗口在Resize的过程中,Item之间会出现彼此遮挡或是出现某个Item只是部分可见。这时我们更希望这个Item干脆隐藏起来好了。3. 很难在运行时调整... 阅读全文
2010年1月16日
摘要:
接着上一篇。2009年9月30日 东方既白地点:张江传奇服务:KFC的兄弟品牌,经营模式和KFC基本一样。中式快餐店。品种:各种套餐、饮料。价格:套餐18元以上。饮料(包括豆浆、粥)4.5元以上。人均22元左右。品质:差强人意,比食堂强些,但是和饭店差多了。毕竟是快餐。口味偏甜。太多次了 味千拉面地点:很多地方服务:日式的用餐环境,直接找个地方坐下之后就可以... 阅读全文
2010年1月15日
摘要:
我们都知道DataBinding的格式是这样的:{Binding Path=PropertyName}其中的Path=这几个字是可以省略的。从而简写成:{Binding PropertyName}这个行为也在MSDN上面特别介绍过。本文所指“解析错误”是指:当Property是自定义的AttachedProperty时,第二种写法会产生运行时错误。如下代码所示:Demo C... 阅读全文
2009年12月30日
摘要:
实际项目中常常要实现有CheckBox列表框。但是WPF没有自带这样的一个控件,下面就用Style来实现这样的功能。而对于CheckBox列表框,又常常会有一个Select All的CheckBox来表示当前列表框的选择状态。这个功能也会被包含在下面的示例之中。效果如下图所示。对于单纯的,没有后台数据绑定的情况下,这个功能可以用ItemContainerStyle来实现。代码如下:CheckLis... 阅读全文
2009年12月26日
摘要:
这里要实现的功能,就是类似Blend中间的工作面板——可以缩放和拖动其中的内容。这个功能的实现方式应该有不少。而且在Blend 3当中加入了MouseDragElementBehavior,这个功能的实现似乎就更简单了,但是MouseDragElementBehavior是基于RenderTransform来实现拖动的效果的。结果就是滚动条不能正确地显示出来。下面给出了一个... 阅读全文
2009年12月4日
摘要:
这是一个非常常见的功能,要求也很简单,在Column Header上显示一个小三角表示表示现在是在哪个Header上的正序还是倒序就可以了。微软的MSDN也已经提供了实现方式。微软的方法中,是通过ColumnHeader Template实现的,一共要维护至少两个Header Template,一个显示正三角,一个显示倒三角。在用户点击Header的时候同时切换使用的Template。如果你的Li... 阅读全文
2009年12月2日
摘要:
在WPF中制作位移类动画大致有3种方式,Margin、RenderTransform和LayoutTransform。虽然3者的效果略有不同,但是不少情况下3种方式可以通用。这时RenderTransform就以其优秀的平均性能成了3者的首选。因为RenderTransform不涉及Layout的调整,不会触发界面的重新布局(关于RenderTransform与LayoutTransform之间的... 阅读全文
2009年11月20日
摘要:
今天看到某网页上有类似每日英语的小功能,觉得其中的英语很应该看一看。可是那英语8秒才更新一下。我可没有这耐心等它更新完啊。直接看他的源代码。知道是用JavaScript在后面不断地更新数据。查看代码,其中有一个english.js,打开看看。其中有一个代码是这样的。 this.queryDB=function (e){ o.url="Plugins/EnglishXML/getEnglish.a... 阅读全文