找到相关内容 97
使用扩展方法打造一套简单的WPF/SL绑定机制
在昨天的博文《WPF/Silverlight的数据绑定设计的真糟糕》中,分析了三大应用场景下WPF/SL下绑定的缺陷。我的应用中有95%以上(甚至99%以上)的绑定都属于那三种应用场景,因此无法接受WPF/SL繁琐的绑定机制。骂不是目的,想办法解决问题是黑客精神的所在。知道缺陷之后,就可以来弥补。刚才花了两个小时时间用扩展方法写了一套新的WPF/SL绑定机制。 本文只是一份简单的草案和思路探索,
http://www.cyqdata.cn/cnblogs/article-detail-21044 
WPF/Silverlight的数据绑定设计的真糟糕
WPF/Silverlight的数据绑定体系设计的真糟糕,几乎每用一次就要在心中骂一次,不知道是哪个家伙设计的,就像Asp.Net中的ViewState一样,拙劣得很: (1)很难用,一些常见的简单场合使用起来很麻烦; (2)想整个搞清楚很杀脑细胞,不是循序渐进的过程; (3)不整个搞清楚就用不好,或者用的很别扭。 总之,就是一个这样的怪胎——简单的场景下使用很麻烦(增加了很多工作量),复
http://www.cyqdata.cn/cnblogs/article-detail-15442 
WPF中的画笔功能,实现直实线、弯实线、直虚线、弯虚线
1、InkCanvas类。 实现画板需要用到InkCanvas。一般情况下不需任何代码就可以在上面画线了。 如果需要设置画笔颜色、笔尖大小等就需要设置DefaultDrawingAttributes,例如: DrawingAttributes attributes = new DrawingAttributes(); attributes.Color = Colors.Black; attrib
http://www.cyqdata.cn/cnblogs/article-detail-8288 
WPF快速指导5:验证
WPF快速指导5:验证    本文摘要:    1:WPF中的验证处理机制;    2:自定义验证规则;     3:如何显示验证错误信息    4:指定何时进行验证   1:WPF中的验证处理机制   
http://www.cyqdata.cn/cnblogs/article-detail-6591 
WPF快速指导4:数据绑定之绑定方向与自定义转换器
WPF快速指导4:数据绑定之绑定方向与自定义转换器    本文摘要:    1:绑定目标与绑定源之间的方向;    2:自定义转换器; 1:绑定目标与绑定源之间的方向    该部分的定义MSDN已经描述的非常清楚了,如下:    您可能希望应用程序
http://www.cyqdata.cn/cnblogs/article-detail-6520 
[WPF]自由配置窗体最大化、最小化按钮是否可用,窗口大小不可改变
最近做项目碰到一个需求,要求该窗体禁用最大化按钮,但是保留最小化按钮。窗体大小不可改变。 献贴上效果图 下面是具体做法: 1. 自定义了两个DependencyProperty,具体实现需要用到User32.dll中的函数。代码如下: public static class WindowCustomizer { #region CanMaximize p
http://www.cyqdata.cn/cnblogs/article-detail-6057 
WPF快速指导3:数据绑定
WPF快速指导3:数据绑定  本文摘要:1:实体类的绑定;2:实体类集合的绑定及DataTemplate;3:自定义的实体类集合,如ObservableDictionary; 4:Path的语法; 1:实体类的绑定          理解WPF数据绑定,首先需要理解接口INotifyCollecti
http://www.cyqdata.cn/cnblogs/article-detail-5468 
WPF/Silverlight Layout 系统概述——Arrange
上一篇我们介绍了WPF/Silverlight Layout系统的Measure过程,本文将继续介绍Arrange过程。   Arrange过程概述   普通基类属性对Arrange过程的影响 我们知道Measure过程是在确定DesiredSize的大小,以便Arrange过程参考这个DesiredSize,确定给MyPanel分配多少空间,但是DesiredSiz
http://www.cyqdata.cn/cnblogs/article-detail-3154 
深入WPF -- Dispatcher(补)
书接前文,前篇文章介绍了WPF中的Dispatcher,由于概念太多,可能不是那么好理解。这篇文章继续讨论,希望在线程和Dispatcher这个点上,能把它讲透。 从哪说起?   按照惯例,在深入问题之前,先找一个插入点,希望这个插入点能为朋友们所理解。   新建一个Window程序,代码如下: int WINAPI _tWinMain(HINST
http://www.cyqdata.cn/cnblogs/article-detail-2997 
WPF快速指导2:模板
WPF快速指导2:模板    本文摘要:    1:模板作用;    2:样式模板;    3:数据模板;    4:如何使用ControlTemplate;    5:如何使用DataTemplate;  
http://www.cyqdata.cn/cnblogs/article-detail-2852 
WPF -- 从其他线程中修改更新控件
大家都知道,多线程可以大大提高WPF的反应效率,但是不幸的是,UI控件不能被多个线程同时更改。 比如:   代码 public partial class Window1 : Window{ public Window1() { InitializeComponent(); CheckBox myCheckBox = new CheckBox(); myCheckBox.Content = "A Checkbox"; System.Threading.Thread thread = new System.Threading.Thread( new System.Threading.ThreadStart( delegate() { txtUpdateDownloadInfo.Text += "up
http://www.cyqdata.cn/cnblogs/article-detail-2521 
WPF的消息机制(二)- WPF内部的5个窗口之隐藏消息窗口
  目录 WPF的消息机制(一)-让应用程序动起来 WPF的消息机制(二)-WPF内部的5个窗口 (1)隐藏消息窗口 (2)处理激活和关闭的消息的窗口和系统资源通知窗口 (3)用于用户交互的可见窗口 (4)用于UI窗口绘制的可见窗口 WPF的消息机制(三)-WPF输入事件的来源 WPF的消息机制(四)-WPF中UI的更新   WPF内部的5个窗口 对于Windows系统来说,它是一个消息系统,消息系统的核心就是窗口。对于WPF来说也是如此。那么WPF内部为什么需要窗口,又存在哪些窗口呢? 在上一篇,我们频繁的提及“线程”,“Dispatcher”其实,运行WPF应用程序所在的线程就是WPF所谓的UI线程,在Application.Run之后,调用Dispatcher.Run时会检查当前线程是否已经存在了一个Dispatch
http://www.cyqdata.cn/cnblogs/article-detail-2287 
WPF下可编辑Header的Tab控件实现
介绍 有这样一个需求,当用户双击Tab控件Header区域时, 希望可以直接编辑。对于WPF控件,提供一个ControlTemplate在加上一些Trigger就可以实现。效果如下: 代码 首先,我们需要给Tab Header设计一个ControlTemplate。类似一个TextBlock,双击进入编辑状态。 所以Xaml如下: <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type local:EditableTabHeaderControl}"> <Grid>
http://www.cyqdata.cn/cnblogs/article-detail-2282 
WPF UI单元复制到剪贴板
     大家在日常工作中应该遇到过这样的问题:需要对应用程序界面进行截屏操作,然后将截屏内容拷贝到其他文档中使用。通常情况下我们会使用一些截屏软件或者“Ctrl+PrtSc ”,本篇将介绍如何在WPF 程序中将UI 单元直接以图片形式复制到剪贴板,以达到为应用程序界面制作快照(Snapshot)的功能。      以我之前做过的一个“WPF 员工卡”的文章为例。首先,要为程序添加一个自定义命令(Command):CopyUI。该命令的快捷键方式为“Ctrl+U”,在命令中定义两种事件CanExecute、Executed。关于自定义命令可以参考这里。 <Window.Resources> <Storyboard x:Key="flashClose">
http://www.cyqdata.cn/cnblogs/article-detail-386 
WPF企业内训全程实录(下)
摘要   WPF企业内训全程实录由于文章比较长,所以一共拆分成了三篇,上篇WPF企业内训全程实录(上)主要讲了基础,中篇WPF企业内训全程实录(中)主要讲解开发模式、团队协作及应用框架,起着承上启下的作用,主要讲解开发模式、团队协作及应用框架。这篇作为该实录的下篇——终结篇,起着总结的作用,主要讲解其他技术的引用、WPF项目及性能优化、部署与更新等议题。   其实如果大家仔细看目录,可以发现我安排的顺序是首先讲解最基本的概念和基础内容、然后过渡到开发模式及框架、最后结合其他技术和项目实际运用,这也是学习并应用一门技术最好的流程。上篇实际上主要有两个侧重点:一则就是理清脉络——历史渊源、概念引入及基本阐述;二则是讲解WPFBasic——主要细究WPF的每个知识点,基本涵盖了WPF的方方面面;如果大家感兴趣,可以下载代码并
http://www.cyqdata.cn/cnblogs/article-detail-254 
WPF自定义ListBox(二)
Helloj2ee的自定义ListBox(一),虽然很用心,但看出来反响不强烈。只能这一篇再给力一点。虽然评论很少,但是也看出一些讯息。 讯息之一,就是Helloj2ee的WPF看不懂。的确在这里写的不是基本的东西,而是对其WPF的相关基础概念掌握了之后,才能看的一个系列。自定义控件在《葵花宝典——WPF自学手册》一书中,是放到第六卷——华山之巅,足见其高阶。因此Helloj2ee在后面列出的参考文献,就很有价值了。因为您若是看不懂,不妨去参考相关文献,即便您没有葵花宝典一书,但总可以知道需要掌握的相关概念是什么,参阅其他书又何妨? 讯息之二,是提供的源码无法打开,那么Helloj2ee已经更新过。如果解压还是失败,您不妨在下面的回帖中告诉我。 说到给力,那么只有让这个控件在本章当中酷起来或者炫起来,才是给力的王道。   Circu
http://www.cyqdata.cn/cnblogs/article-detail-245 
WPF中的自定义ListBox(一)
上周侯捷大师来京做了一次讲座,有幸和他聊聊。当别人排队,而我也在排队。有意思的是当别人在找侯捷大师签名时,而我确有幸为侯捷大师签了一次名,当然是在我的《葵花宝典——WPF自学手册》上签下了自己难看的名字。这不是重点,重点是他提到他的人生中几件关键的事情。其中一件,如果我的记忆没有错的话,应该是Windows 3.0来的时候的冲击,他当时还在一个台湾的研究所里工作,在考虑窗口,控件如何“Message Based,Event Driven”(以消息为基础,事件驱动之)。Windows3.0来了,一下他的模糊思路明晰起来,尽管侯大师考虑的只是一个雏形,而Windows是实实在在真正的产品。但这并不重要,重要的是他们的思路不谋而合。这样他不至于在DOS到Windows巨变的情况下“死在沙滩上”。很多程序员由于无法从DOS的编
http://www.cyqdata.cn/cnblogs/article-detail-221