摘要: 从这一篇往前看,其实wpf中还有很多东西没有讲到,不过我的原则还是将比较常用的知识点过一遍,如果大家熟悉了这些知识,基本功也就打的差不多了,后续可以等待老邓的wpf细说系列,这里我先顶老邓一下。一:用户控件(UserControl) 对于用户控件的认识,我想大家还是很熟悉的,因为这玩意我们在webform或者在mvc中用的可多了,我们看看wpf中怎么使用,首先我们要知道"用户控件“继承自UserControl,而UserControl继承自ContentControl,也就是上上一篇说的”内容控件”。第一步:在vs中的添加项中找到一个“用户控件WPF”,点击添加即可。第二步:我们发现 阅读全文
posted @ 2012-07-15 17:41 一线码农 阅读(15045) 评论(22) 推荐(29)
摘要: 这一篇我们聊聊wpf中的画刷,在wpf中如果想玩各种花哨,那么如何使用画刷则是我们的基本功,首先看一下类图从图中可以看出,wpf有5种画刷和1种自定义画刷,都是继承自基类Brush,我们看看基类中有哪些好玩的东西。这里有3个比较感兴趣的属性,分别属于”透明度“和”图像转换“,好,下面我们一一解说。一:SolidColorBrush(实心画刷) 实心画刷是我们用的最多的,也是最简单的一个,其实也就是填充色的意思,一个很简单的例子:其实这里的Background=Red使用的就是SolidColorBrush,xaml进行解析时,发现Background是Brush类型,刚才我也说了... 阅读全文
posted @ 2012-07-14 23:34 一线码农 阅读(19482) 评论(6) 推荐(14)
摘要: 这篇我们来大概的看一下WPF的各种神马控件,首先我们要知道所有的wpf控件都是继承自Control,从用途上可以分为四种 1:内容控件(Content Controls) 2:条目控件(Items Controls) 3:文本控件(Text Controls) 4:范围控件(Range Controls)一:内容控件 内容控件的最大的特征就是有一个Content属性,从前面的文章中,我们多多少少也知道Content接收的是一个Object类型,或许我们会立即想到莫非Button就是一个内容控件,确实,Button算是一个内容控件,凡是内容控件都继承自Cont... 阅读全文
posted @ 2012-07-09 01:32 一线码农 阅读(20727) 评论(16) 推荐(22)
摘要: 在webform中,如果提到“绑定”二字,相信大家都不会陌生,绑定,让我们的代码更加的简洁优美,在wpf中也存在各种神马的绑定,当然使用上都是行隔理不隔。 一: 控件到控件的绑定 既然是绑定,那么肯定就有”源对象“和”目标对象“两种状态实体,从图的角度上来说存在三种状态:确实在wpf中存在这三种模式的对应方式,1:OneWay 正如图A所说,Source影响着Target,但是Target却影响不到Source。2:OneWayToSource 也正如图B中所表述的一样,Target影响Source,而Source却影响不到Target。3:TwoWay 这个也就相当于无向图的... 阅读全文
posted @ 2012-06-30 23:25 一线码农 阅读(20218) 评论(11) 推荐(24)
摘要: 今天说下wpf中的模板,前面一篇中我们讲到了style,但是style所能做的仅仅是在现有控件的基础上进行修修补补,但是如果我们想彻底颠覆控件样式,那么我们就必须使用这一篇所说的模板。 老外写书都喜欢在篇头搞一个类图,方便我们宏观认识,这里我也上一个。一:控件模板1:ControlTemplate 我们知道wpf的控件都是继承自Control,在Control类中有一个Template属性,类型就是ControlTemplate。那么利用这个ControlTemplate就可以彻底的颠覆控件的默认外观,这里我把一个checkbox变成一个小矩形,蛮有意思的。 1 <Window x:Cl 阅读全文
posted @ 2012-06-28 01:47 一线码农 阅读(22914) 评论(33) 推荐(42)
摘要: 说起样式,大家第一反应肯定是css,好的,先上一段代码。 1 html{border:0;} 2 ul,form{margin:0; padding:0} 3 body,div,th,td,li,dd,span,p,a{font-size:12px; font-family:Verdana,Arial,"宋体";color:#575757;} 4 h3,input{font-size:12px; font-family:Verdana,Arial,"宋体";color:#4465a2;} 5 6 body { 7 /*background-color:# 阅读全文
posted @ 2012-06-17 20:40 一线码农 阅读(21393) 评论(11) 推荐(21)
摘要: 首先我们还是新建一个空项目,看一下VS给我们默认生成的xaml结构。<Window x:Class="WpfApplication1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525 阅读全文
posted @ 2012-06-17 11:58 一线码农 阅读(32470) 评论(16) 推荐(20)
摘要: 这些天从项目上接触到了wpf,感觉有必要做一个笔记,首篇还是聊聊基本的概念,要学习wpf,我们需要采用webform的思维来考虑问题。一:App环境承载 我们都知道,console和winform程序的入口函数都是main,wpf同样也不例外,好了,我们新建一个wpf的程序,vs自动给我们生成了一个MainWindow.xaml和App.xaml文件。微软官方说wpf程序是从Application开始的,既然是开始总有个入口点吧,奇怪的是我们并没有发现Main函数,程序又是如何Run起来的呢?其实,wpf为了简化我们的工作,把一些机械性的代码透明了,那么我们如何找到这个Main函数... 阅读全文
posted @ 2012-06-17 00:44 一线码农 阅读(37621) 评论(28) 推荐(39)
摘要: 最后一篇,我们来说说vs的“性能向导",通常我们调试程序的性能一般会使用Stopwatch,如果希望更加系统的了解程序,我们就需要用到”性能向导“,通过性能报告便于我们快速的发现并找到潜在的性能问题。首先我们上一段需要改进的代码: 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Diagnostics; 6 7 namespace Test 8 { 9 class Program10 {11 ... 阅读全文
posted @ 2012-06-03 16:39 一线码农 阅读(7680) 评论(7) 推荐(11)
摘要: 其实说到上一篇,我们要说的task的知识也说的差不多了,这一篇我们开始站在理论上了解下“线程池”和“任务”之间的关系,不管是说线程还是任务,我们都不可避免的要讨论下线程池,然而在.net 4.0以后,线程池引擎考虑了未来的扩展性,已经充分利用多核微处理器架构,只要在可能的情况下,我们应该尽量使用task,而不是线程池。首先看一下task的结构从图中我们可以看出Task.Factory.StartNew()貌似等同于用ThreadPool.QueueUserWorkItem()创建,但是请注意,我是用TPL的形式使用线程池,要知道task出现以后,一直标榜着以更少的工作量,更低的性能消耗... 阅读全文
posted @ 2012-05-27 20:41 一线码农 阅读(6660) 评论(6) 推荐(11)
摘要: 在.net里面异步编程模型由来已久,相信大家也知道Begin/End异步模式和事件异步模式,在task出现以后,这些东西都可以被task包装起来,可能有人会问,这样做有什么好处,下面一一道来。一: Begin/End模式1: 委托 在执行委托方法的时候,我们常常会看到一个Invoke,同时也有一对你或许不常使用的BeginInvoke,EndInvoke方法对,当然Invoke方法是阻塞主线程,而BeginInvoke则是另开一个线程。 1 class Program 2 { 3 static void Main(string[] args) 4 ... 阅读全文
posted @ 2012-05-26 13:21 一线码农 阅读(7355) 评论(8) 推荐(12)
摘要: 第三篇来的好晚啊,上一篇说了如何向服务器推送信息,这一篇我们看看如何"快好准"的从服务器下拉信息。 网络上有很多大资源文件,比如供人下载的zip包,电影(你懂的),那么我们如何快速的进行下载,大家第一反应肯定就是多线程下载,那么这些东西是如何做的呢?首先我们可以从“QQ的中转站里面拉一个rar下来“。然后用fiddler监视一下,我们会发现一个有趣的现象:第一:7.62*1024*1024≈7990914 千真万确是此文件第二:我明明是一个http链接,tmd的怎么变成n多个了?有意思。好,我们继续往下看,看看这些链接都做了些什么?最终,我们发现http协议中有一个Cone 阅读全文
posted @ 2012-05-20 13:42 一线码农 阅读(8342) 评论(14) 推荐(22)
摘要: 日常开发中,相信大家经常会用like去匹配一些数据,同时我们也知道,like往往会导致全表扫描,当数据量越来越大的时候,我们会纠结于数据库的龟速查找,此时我们必须另寻蹊跷,这时lucene就可以大显身手了。 首先我们做一个demo,向数据库中插入10w条数据,总共778M。接下来,我们搜... 阅读全文
posted @ 2012-05-13 00:53 一线码农 阅读(13989) 评论(49) 推荐(36)
摘要: 承接上一篇,我们继续说下.net4.0中的同步机制,是的,当出现了并行计算的时候,轻量级别的同步机制应运而生,在信号量这一块 出现了一系列的轻量级,今天继续介绍下面的3个信号量 CountdownEvent,SemaphoreSlim,ManualResetEventSlim。 一:Countdow 阅读全文
posted @ 2012-04-08 15:53 一线码农 阅读(9169) 评论(11) 推荐(14)
摘要: 在并行计算中,不可避免的会碰到多个任务共享变量,实例,集合。虽然task自带了两个方法:task.ContinueWith()和Task.Factory.ContinueWhenAll()来实现任务串行化,但是这些简单的方法远远不能满足我们实际的开发需要,从.net 4.0开始,类库给我们提供了很多的类来帮助我们简化并行计算中复杂的数据同步问题。大体上分为二种:① 并发集合类: 这个在先前的文章中也用到了,他们的出现不再让我们过多的关注同步细节。② 轻量级同步机制: 相对于老版本中那些所谓的重量级同步机制而言,新的机制更加节省cpu的额外开销。关于并发集合类没什么好讲的,如... 阅读全文
posted @ 2012-04-07 23:07 一线码农 阅读(10523) 评论(2) 推荐(21)