WPF
文章平均质量分 78
月影
时势造英雄,英雄亦适时!
展开
-
自定义WPF 窗口样式
自定义Window在客户端程序中,经常需要用到自定义一个Window,大部分是为了好看吧。做了很多研究和实践之后,觉得需要把这个过程写下来,以供查阅。WPF提供的丰富的功能使得自定义Window变得简单,但是也不是一个简单的Style就能做到的事情。虽然WPF中的控件是Lookless的,但是Window类有他自己的特殊之处,做个简单的实验就能看出,对于普通的WPF控件,用XamlWriter.Write方法就能将某个类型对象的模板输出出来,这样就可以看到该控件的内部构造。但是如果输出Window对象的默认原创 2010-09-26 21:51:00 · 17800 阅读 · 42 评论 -
L是无外观
ItemsControl: 'L' is for Lookless (a.k.a., "Styles, Templates, andTriggers… Oh My!")在这片文章中,我们将研究WPF控件如何通过样式和模板获取可视化展示。然后我们将看看这些技术是如何应用到Items翻译 2011-07-15 16:01:11 · 1698 阅读 · 0 评论 -
E是可编辑集合
ItemsControl: 'E' is for Editable Collection1. 理解ListCollectionView类如果你绑定到一个ObservableCollection 集合,也就是说一个实现了IList的集合,绑定引擎会自动为该集合自动产生一个Li翻译 2011-07-14 17:46:41 · 1095 阅读 · 0 评论 -
C是集合
ItemsControl: 'C' is for Collection(该系列的第二章是关于ItemsControl的一些有趣的东西,但是跟了解ItemsControl不是很相关,故此略过)如果没有一个项的集合,那么ItemsControl将会一无所有。在这篇文章里,我们将会调查翻译 2011-07-13 22:28:24 · 1642 阅读 · 0 评论 -
G是产生器
ItemsControl: 'G' is for Generator本节中我们要学习项容器是如何出现的。1. 这些项容器来自哪里?在上一节的例子里,项容器被神奇的创建 ,而我们只是绑定了控件的ItemsSource属性。考虑以下ListBox示例: ItemConta翻译 2011-07-14 16:10:36 · 1488 阅读 · 2 评论 -
创建WatermarkTextBox和WatermarkPasswordBox(带水印的文本框)
使文本框带有文字提示是一个非常有用特性,不但让界面变得整洁,而且代码也简洁了不少。Windows登录时,输入用户名和密码的文本框和密码框就有这个功能。在WPF里面创建这样的文本框和密码框非常简单,下面就一步一步介绍如何实现这个功能。首先创建一个WatermarkTextBox类从TextBox派生。然后添加两个依赖属性:Watermark:该属性类型为String,用于设置要显示在文本框里原创 2012-09-05 09:43:23 · 6036 阅读 · 3 评论 -
数值范围选择控件RangeSlider
RangeSlider控件用于在一个指定上下限的范围中选择一个数值范围,因此该控件的Maximum和Minimum属性用于指定上下限;而SelectionStart和SelectionEnd用于指定选择的范围,还有一个Change属性用于指定SelectionStart和SelectionEnd的最小变化值。运行效果如下图所示。默认样式很难看,不过定制一个漂亮的样式很简单。 以下是原创 2012-12-29 14:29:51 · 7991 阅读 · 0 评论 -
一个自己创作的拖放框架(DragDropFramework)
一个自己创作的拖放框架(DragDropFramework)在WPF编程中,拖放操作涉及的事件极多。如果每次因为有一个拖放操作需求就要监听所有事件来完成拖放操作,工作量将非常可观。为了复用代码,有人使用WPF的关联属性创作了一个拖放框架,我对其进行了完善。使用非常简单,只需要从DragSourceAdvisor和DropTargetAdvisor派生自己的类型,并重写相应的方法,并将此对象用关原创 2011-08-01 15:36:51 · 2674 阅读 · 0 评论 -
理解和使用WPF 验证机制
首先建立一个demo用以学习和实验WPF Data Validation机制。创建一个数据实体类:public class Employee{ public string Name {get; set; } public int? Age {get; set; }}创建一个用户控件或者窗口,用以输入Name和Age,如下:Grid Width="原创 2013-06-20 11:15:37 · 10073 阅读 · 4 评论 -
I是项容器
ItemsControl: 'I' is for Item Container1. 杂乱无章的项成员考虑以下示例: http://drwpf.com/blog/ http://forums.microsoft.com/MSDN/翻译 2011-07-14 11:25:30 · 1021 阅读 · 0 评论 -
A是功能丰富
ItemsControl: ‘A’ is for Abundance这是我所谓的“ItemsControl:A-Z”的第一篇文章。我最近收到了很多直接或者间接跟ItemsControl有关的问题。值得注意的是,提问者甚至没有意识到他们正在提问的是一个跟ItemsControl相关翻译 2011-07-13 20:42:49 · 862 阅读 · 0 评论 -
P是Panel
ItemsControl: 'P' is for Panel1. 我们是如何到这儿的?在Collection一节中,我们了解到ItemsControl用一种可以预测的方式使用集合,也就是说使用CollectionView。在数据模板一节中,我们学习到,集合中的对象可以是任翻译 2011-07-14 08:09:03 · 1535 阅读 · 0 评论 -
为ListView添加矩形选择功能
也许微软会在以后的版本中加入对矩形选择列表项的支持,但是现在还没有,所以有必要将其实现并记录下来。对现有ListView控件添加矩形选择功能的最佳实现应该是使用关联属性,这样可以将使用该功能的复杂性降到最低原创 2010-12-06 12:35:00 · 1664 阅读 · 2 评论 -
四叉树C#实现
四叉树是用于二维空间对象查找的一个数据结构,本实现包括了三个类:QuadTree,QuadTreeNode, QuadNodeItem。见名思意用于对外提供构建和查找功能的接口都定义在泛型的QuadTree中,QuadTreeNode类和QuadNodeItem类都做为QuadTree类的内部类型实现,对外不可见。原创 2010-12-10 14:54:00 · 9293 阅读 · 8 评论 -
使用带ParserContext参数的Xaml.Load方法
使用带ParserContext参数的Xaml.Load方法。如果一段XAML中存在一个标记需要从外部命名空间中解析, 就需要用到ParserContext类原创 2010-12-30 14:40:00 · 2522 阅读 · 0 评论 -
从FrameworkElement对象创建Cursor对象
WPF 中动态创建Cursor对象原创 2010-11-09 17:47:00 · 1485 阅读 · 0 评论 -
使用WPF动画编程的几点注意事项
在使用了动画的属性上赋值失败和无法使用Storyboard启动动画的解决方法原创 2011-05-03 11:21:00 · 3741 阅读 · 0 评论 -
ItemsControl A~Z----深入了解ItemsControl
ItemsControl A~ZItemsControl是WPF控件中最重要的控件之一,大部分控件都或多或少的跟此控件有关,同事发给我了这个链接的时候,我觉得真的有必要好好读一下。毕竟对ItemsControl一直是一知半解,始终不能发挥出它该有的巨大威力。为了更好的理解它,干脆翻译 2011-07-13 20:39:39 · 1352 阅读 · 0 评论 -
D 是数据模板
ItemsControl: 'D' is for DataTemplate 术语“rich content model”经常在WPF的圈子里出现。在这篇文章中,我们剖析了内容模型,特别是该模型在ItemsControl上的应用。1. WPF内容模型在WPF中,根据逻辑孩子翻译 2011-07-13 23:39:57 · 1000 阅读 · 0 评论 -
IEditableObject的一个通用实现
IEditableObject的一个通用实现IeditableObject是一个通用接口,用于支持对象编辑。当我们在界面上选择一个条目,然后对其进行编辑的时候,接下来会有两种操作,一个是保持编辑结果,一个取消编辑。这就要求我们保留原始值,否则我们只能到数据库里面再次查询。IeditableObject接口的三个方法定义为我们定义了这个行为规范: public interface IEditable原创 2014-04-29 10:29:27 · 2594 阅读 · 0 评论