随笔分类 - WPF
摘要:用到DataGrid的列是自动生成的,但是大家都知道,WPF的DataGrid会在最后多出一列,通常的解决办法都是在最后一列的列宽上这样设置 Width="*",这样,最后一列多出的就没有了但是啊,后台生成可怎么写这个Width="*",网上资料比较难找,所以就不废话了,直接上代码DataGridL...
阅读全文
摘要:标题太空泛,直接上图无论是在验证啊,还是提示方面等一些右上角的角标之类的效果,我们会怎么做?这里介绍一种稍微简单一些的方法,利用附加属性和Adorner来完成。例如WPF自带的控件上要加这样的效果,首先继承自原控件然后重写是可以的,但是控件类型太多,重写不过来。这个时候我们唯一能添加的只有附加属性了...
阅读全文
摘要:http://www.visifire.com/forums/index.php?showtopic=3153http://www.visifire.com/forums/index.php?showtopic=362http://www.visifire.com/forums/index.php?showtopic=1149
阅读全文
摘要:TabControl和TabItem一般都是组合起来使用的,要想灵活运用,首先就得了解清楚他们的默认样式,然后在上面做修改。如何找到一个控件的默认样式呢?这里使用到工具Blend4,它能够把控件的默认样式赤果果地呈现在你眼前。今天我们就来做出如下样式一眼看上去,被选中的TabItem好像很复杂的样子,其实,也就是一张背景图而已,这张背景图的制作可以用Design4来完成,使用基本路径+钢笔,很容易能够做出这样的效果然后就是在tabcontrol中修改默认样式<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/p
阅读全文
摘要:针对自定义控件的特性,由于它的界面是在一个Themes/Generic.xaml文件中,并且在ControlTemplate中,所以,不能根据x:Name来访问其中的控件,在ControlTemplate中的资源和控件(建议把资源和控件,动画等都写到ControlTemplate中)的访问要通过重写OnApplyTemplate,方法GetTemplateChild来获得。那么,许多特性就不能在xaml中编写了,包括绑定。自定义控件,依赖属性如何绑定到Generic.xaml中的控件上,只能通过GetTemplateChild方法获取到该控件,然后在后台绑定。动画可以写到资源中,到时候获取然后
阅读全文
摘要:WPF自定义路由事件一般3个步骤1.注册路由事件2.路由事件包装3.定义触发事件的方法public class myButton:Button { //1.定义并注册事件 public static readonly RoutedEvent TimeEvent = EventManager.RegisterRoutedEvent("GetTime", RoutingStrategy.Bubble, typeof(EventHandler<TimeRoutedEventArgs>), typeof(myButton)); //2.包装事件 ...
阅读全文
摘要:通常,当WPF常用的控件不能满足我们的需求时,我们就会创建自己的控件,有用户控件和自定义控件两种。就很想winform中的,用户控件可以基于当前的控件组合成我们需要的控件,而自定义控件那么就是从0做起,不过继承自一个和我们功能相似的类会效果更好,比如CustomControl继承Button的一些方法特性。UserControl非常好理解,网上有许多教程。CustomControl由于其没有Xaml界面,界面是放到Themes/Generic.xaml中来定义的,所以在开发中,特别是初学者带来一些困惑,今天怒搞一天,把自己的经验分享一下,也希望前辈们能多多指教。好,创建一个CustomCont
阅读全文
摘要:学习资料非常宝贵,感谢博主的分享。自定义控件1http://www.cnblogs.com/zhouyinhui/archive/2007/10/16/926355.html自定义控件2http://www.cnblogs.com/zhouyinhui/archive/2007/10/27/939920.html自定义控件3(上)http://www.cnblogs.com/zhouyinhui/archive/2007/11/18/963441.html自定义控件3(下)http://www.cnblogs.com/zhouyinhui/archive/2007/12/01/979715.h
阅读全文
摘要:有什么不懂就上MSDN上查,http://msdn.microsoft.com/zh-cn/library/system.windows.controls.datagrid(v=VS.95).aspx照着例子做一下,你大概就能知道DataGrid怎么使用了。
阅读全文
摘要:有如下控件<Grid> <ListBox x:Name="lb"> <ListBox.ItemTemplate> <DataTemplate> <StackPanel Orientation="Horizontal"> <CheckBox x:Name="ck"></CheckBox> <TextBlock x:Name="tb" Text="{Binding StuId}"></TextBlo
阅读全文
摘要:构成Style的最重要的两个元素是Setter和Trigger,Setter类帮助我们设置控件的静态外观风格,Trigger则帮助我们设置控件的行为风格。Style中的SetterSetter设置器,什么的设置器?属性的,我们给属性赋值时一般都采用“属性名=属性值”的形式。Setter类的Property属性用来指明你想为目标的那个属性值赋值;Setter类的Value属性则是你体统的属性值。<Grid> <Grid.Resources> <Style x:Key="myStyle" TargetType="TextBox"
阅读全文
摘要:这是最具创造力的一节了,因为WPF中模板的功能非常强大。在WPF中,通过引入模板(Template)微软将数据和算法的“内容”与“形式”解耦了。WPF中的Template分为两大类:ControlTemplate 是算法内容的表现形式,它决定了控件“长成什么样子”。DataTemplate 是数据内容的表型形式,一条数据显示成什么样子。总而言之,ControlTemplate是控件的外衣,DataTemplate是数据的外衣。DateTemplate常用的地方有3处ContentControl的ContentTemplate属性,相当于给ContentControl的内容穿衣服。ItemsCo
阅读全文
摘要:这毛问题困扰我几天了,主要是关键字不好搜索,不过进过大量的点击搜索,无意中打开一个网页,居然找到了设置字体,我们都喜欢这样<Grid> <Grid.Resources> <CollectionViewSource x:Key="sysFonts" Source="{x:Static Member=Fonts.SystemFontFamilies}"></CollectionViewSource> </Grid.Resources> <G...
阅读全文
摘要:让我们看一个例子,创建一个简单的WindowsForm项目,在窗体上放一个Buttonprivate void button1_Click(object sender, EventArgs e) { if (sender is Button) { MessageBox.Show((sender as Button).Name); } }事件模型的几个关键部分事件的拥有者:button1事件:button1.Click事件的响应者:窗体本身事件处理器:this.button...
阅读全文
摘要:附加属性也是依赖属性,具体请看例子class Student:DependencyObject { public static int GetGrade(DependencyObject obj) { return (int)obj.GetValue(GradeProperty); } public static void SetGrade(DependencyObject obj, int value) { obj.SetValue(GradeProperty, value...
阅读全文
摘要:依赖属性就是一种可以自己没有值,并能通过使用Binding从数据源获得值(依赖在别人身上)的属性。拥有依赖属性的对象称为“依赖对象”。WPF开发中,必须使用依赖对象作为依赖属性的宿主,使二者结合起来。依赖对象的概念被DependencyObject类所实现,依赖属性的概念则由DependencyProperty类所实现从这棵继承树上可以看出,WPF的所有UI空间都是依赖对象。看最简单的依赖属性class Student : DependencyObject { public string Name { get { return (stri...
阅读全文
摘要:Binding用于数据校验的属性是ValidationRules,用于数据转换的属性是Converet。Binding的数据校验Binding的ValidationRules属性是Collection<ValidationRule>,可以为每个Binding设置多个数据校验的条件,每个条件是一个ValidationRule类型对象。Binding进行校验时默认的行为是认为来自Source的数据是没有问题的,只有来自Target的数据有问题(Target多为UI控件,所以等价于用户输入的数据)。所以只有Target到Source的数据才会进行校验。如果想要改变这种行为,就需要Vali
阅读全文
摘要:如果把Binding比作数据的桥梁,那么它的两端分别是Binding的源和目标。数据从哪里来就是源,Binding是架在中间的桥梁,Binding目标是数据要往哪儿去。一般情况下,Binding源是逻辑层的对象,Binding目标是UI层的控件对象,这样,数据就会源源不断通过Binding送达UI层,被UI层展现,也就完成了数据驱动UI的过程。 数据源是一个对象,一个对象上可能有很多数据,这些数据又通过属性暴露给外界。那么,其中哪个数据是你想通过Binding送达UI的元素呢?换句话说,UI上的元素关心的是哪个属性值的变化,这个属性就称为Binding的路径(Path)。但光有属性还不行...
阅读全文
摘要:WPF的UI元素可以分为如下这些类型名称 注释ContentControl单一内容控件HeaderedContentControl带标题的单一内容控件ItemsControl以条目集合位内容的控件HeaderedItemsControl带标题的以条目集合位内容的控件Decorator控件装饰元素Panel面板类元素Adorner文字点缀元素FlowText流式文本元素TextBox文本输入框TextBlock静态文字Shape图形元素ContentControl族特点:a.均派生自ContentControl类 b.他们都是控件 c.内容属性的名称为Content d.只能单一元素充当起内..
阅读全文
摘要:粗略而言,日常工作中我们打交道最多的控件无外乎6类(1)布局控件可以容纳多个控件或嵌套其他布局控件,用于在UI上组织和排列控件。(2)内容控件只能容纳一个控件或布局控件作为它的内容。(3)带标题内容控件相当于一个内容控件,仅可以添加一个标题(4)条目控件可以显示罗列一些数据(5)带标题的条目控件相当于条目控件加上一个标题显示区(6)特殊内容控件除去以上的都是。
阅读全文