11 2011 档案

摘要:Slider控件,讲行通俗一点就是我们很常见的滑块,控件的外观上显示一系例刻度值,并存在一个可以被拖动的滑块,用户可以通过拖动滑块来控制控件的值。如下图所示,是Windows系统的音量调节滑块。下图所示为QQ音频聊天设置窗口中的音量调节滑块。这样,我们就以很直观的方式认识了Slider控件。接下来看看该控件的构成:然后,查看Slider类的定义,从中找出主体部分。[LocalizabilityAttribute(LocalizationCategory.Ignore)][TemplatePartAttribute(Name = "PART_SelectionRange", 阅读全文
posted @ 2011-11-21 20:30 东邪独孤 阅读(1289) 评论(0) 推荐(1) 编辑
摘要:关键点:Track控件没有默认模板,它包括三个部分DecreaseRepeatButton——这是一个RepeatButton即滑块左(上)的部分;IncreaseRepeatButton——同上,即滑块右(下)部分;Thumb——很明显了,这是拖动的滑块,请参考前面的文章。<Window x:Class="WpfApplication1.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.mi 阅读全文
posted @ 2011-11-21 20:21 东邪独孤 阅读(548) 评论(0) 推荐(0) 编辑
摘要:关键点:要设置ListView的行样式,设置Listview的ItemContainerStyle属性,但在本例中,由于我把样式应用于所有的ListViewItem,故不用设置该属性。<Window x:Class="Wpf_GridHeaderStyle_sample.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x 阅读全文
posted @ 2011-11-17 22:09 东邪独孤 阅读(755) 评论(0) 推荐(1) 编辑
摘要:上一篇文章简单说了一下Expander控件,本文将编写一个自义模板的Expander控件,如下图所示:<Window x:Class="Expander_Sample2.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window1" Height="300" Wid 阅读全文
posted @ 2011-11-17 21:55 东邪独孤 阅读(430) 评论(0) 推荐(0) 编辑
摘要:欢迎加入.NET技术交流群:189931386Expander是一个可以展开和折叠的控件,它包含两部分——标头和内容。标头通Header属性来设置,内容通过Conent属性设置,如下面一个简单的例子: <Expander ExpandDirection="Down" Width="96"> <Expander.Header> <TextBlock Text="标题" FontWeight="Bold"/> </Expander.Header> <Expander 阅读全文
posted @ 2011-11-14 21:33 东邪独孤 阅读(486) 评论(0) 推荐(0) 编辑
摘要:上一篇文章中谈到了BulletDecorator控件,就是为自定义CheckBox控件的模板做准备,因为CheckBox需要比较严格的布局,正好,BulletDecorator控件就合适了,该控件的布局是有项目列表,排列起来好办很多了。第一步,先建立一项资源,就是控件的聚焦样式,即当你在窗体中不断按Tab键使控件获取焦点时的样式,后面要用到。 <!--当控件获得键盘焦点时的样式--> <Style x:Key="FocusStyle"> <Setter Property="Control.Template"> < 阅读全文
posted @ 2011-11-13 21:04 东邪独孤 阅读(393) 评论(0) 推荐(1) 编辑
摘要:这是一个很简单的控件,无非就是控制项目的布局方式,其布局方式只有两种:从左到右,从右到左。一、从左到右二、从右到左布局方向由FlowDirection属性来决定,所以我说这个控件非常简单上面的截图的XAML如下: <BulletDecorator HorizontalAlignment="Center" Background="#AACC01" VerticalAlignment="Center" Height="21" Width="76" FlowDirection="Rig 阅读全文
posted @ 2011-11-13 11:58 东邪独孤 阅读(1601) 评论(0) 推荐(0) 编辑
摘要:ProgressBar控件与传统WinForm使用方法完全一样,我们只需关注:Minimum——最小值,默认为0;Maximum——最大值,默认为100.Value——当前值。关键是它的控件模板,因为系统的默认主题不好看,很多时候我们是需要自定义样式和模板。老方法,先看定义:[TemplatePartAttribute(Name = "PART_Track", Type = typeof(FrameworkElement))][TemplatePartAttribute(Name = "PART_Indicator", Type = typeof(Fra 阅读全文
posted @ 2011-11-12 21:59 东邪独孤 阅读(476) 评论(0) 推荐(0) 编辑
摘要:这个控件,真不好介绍,MSDN上也是草草几句,反正就是可以让用户拖动的玩意儿,但是,你会发现,当你在该控件上拖动时,它没有反响,也就是说这个东西默认不做任何操作的,它是赖在那里什么都不干,除非你去踢上脚。而且,这个控件就像一个四方鸭,你踢一脚它就前进一步,你不踢,它又在那里尸位素餐,什么都不干了。还是用一个例子来说明吧,不过,还是先说一下重要的东西。Thumb有几个核心事件,都是与拖动有关。往深一层想,它是什么?对,就是我们常见的滚动条里面的滑块,就是我们在网格里面可以拖动的分隔线,就是窗口右下角用于通过拖动来改变窗口大小的小东西。Thumb的核心事件有:DragStarted——当你在它上面 阅读全文
posted @ 2011-11-11 23:23 东邪独孤 阅读(626) 评论(0) 推荐(0) 编辑
摘要:欢迎加入微群 DotNet中国:http://qun.t.qq.com/67176884在WPF中获Listview中选中的项,与WinForm里面有着很大的区别,要亲身去研究一下在WPF中如果处理,其实也不难,来,下面我们一起来通过一个简单的示例来感悟一下吧。第一步就是建立一个WPF应用程序项目,这个不用描述了,节省了31个字。第二步,为了实现数据绑定,先写一个简单的员工类,包含三个属性——姓名、年龄、城市。 public class Emp { public string Name { get; set; } public int Age { get... 阅读全文
posted @ 2011-11-08 20:59 东邪独孤 阅读(1360) 评论(0) 推荐(0) 编辑
摘要:我很奇怪的是,微软那厮是怎么搞的,Blend里面居然不能编辑GridView的样式,十万般无奈之下,只好手写XAML来处理了。要想知道一个控件的样式是如何设置,看控件类的定义很重要,我们来看看GridView是如何定义的:[StyleTypedPropertyAttribute(Property = "ColumnHeaderContainerStyle", StyleTargetType = typeof(GridViewColumnHeader))][ContentPropertyAttribute("Columns")]public class G 阅读全文
posted @ 2011-11-08 08:30 东邪独孤 阅读(337) 评论(0) 推荐(0) 编辑
摘要:千万不要认为WPF中的数据绑定会很复杂,尽管它的确比Winform程序灵活多了,但其本质是不变的,特别是ComboBox控件,我们知道在Winform中对该控件的有两个专为数据绑定而设定的属性——DisplayMenber和ValueMenber,分别绑定用于显示和用于存放用户选择值两个字段,最典型的应用类似于key-value形式的数据字段,如学生表中的学号(ID)和学生姓名。其实,在WPF中原理都是一样的,来,我们一起动手玩玩。如何新建应用程序就不用介绍了,省略33个字。在窗口中拖放一个ComboBox控件和一个按钮,按钮用来检测所选择的值。切换到代码视图,定义一个Employee类和一个 阅读全文
posted @ 2011-11-06 21:55 东邪独孤 阅读(501) 评论(0) 推荐(0) 编辑
摘要:本系列文章,是从我的QQ空间转过来的。上一文中,我们分析了依赖项属性的注册和定义方法,并解释了依赖项属性的注册过程,但是,有一个疑问会困惑着我们,既然依赖项属被声明为静态只读字段,那为什么它的值可以被改变呢?难道你不觉得很奇怪吗?微软的葫芦里到底卖的什么药呢?我们来看看。前文中我们提到过,设置依赖项属性的值使用SetValue方法,那好,我们就从SetValue方法入手。SetValue方法的定义如下:public void SetValue(DependencyProperty dp, object value){ base.VerifyAccess(); PropertyMet... 阅读全文
posted @ 2011-11-06 11:31 东邪独孤 阅读(432) 评论(0) 推荐(1) 编辑
摘要:在上一文中,我们用传统面向对象的方法来定义了一个类,而我们同时把该类的实例绑定到两个文本框,第一个文本框用于输入值,第二个文本框用于根据第一个文本框中的输入来取得属性值。在上例中我们已经明了,虽然能做到同步更新,但这同步更新并不是实时的。而是在控件失去焦点或点击按钮之后才发生,因为那个时候是重新进行了绑定,所以,一般的属性声明并没有实现实时更新。下面,我们把Student类进行改动,把Name属性改为依赖项属性。 public class Student:DependencyObject { //注册依赖项属性 public static readonly DependencyProperty 阅读全文
posted @ 2011-11-06 11:26 东邪独孤 阅读(357) 评论(1) 推荐(2) 编辑
摘要:本系列文章是从我的QQ空间拷过来的。依赖项属性可以称得上是WPF中比较难理解的概念,为了搞清楚这个概念,我都把.NET类库进行了反编译,但是,其结果我也是想到了的,微软不是傻子,.NET那么庞大,就算能被你反编译了,你也看不懂它的代码。所以说,经过我一番研究,虽然没有把.NET的每一行代码都弄明白,不过,黄天终不负有心人,依赖项属性的使用方法与基本原理,我可以说已经弄明白了,恰巧,前两天在网上看到一篇讨论依赖项属性的文章,写得还不错,作者估计也是一位高人,再加上我个人的研究,从实际应用的角度来说,我现在已经掌握了依赖项属性的使用方法了,不妨告诉你,其实很简单,可以这么说,整个WPF都很简单,和 阅读全文
posted @ 2011-11-06 11:22 东邪独孤 阅读(352) 评论(1) 推荐(1) 编辑

点击右上角即可分享
微信分享提示