最近在做WPF方面的内容,由于好多属性不太了解,经常想当然的设置,经常出现自己未意料的问题,所以感觉得梳理下. ps:先补下常用控件的类结构,免得乱了 .NET Framework 4.5 Using System.Windows.Controls; 这样就很清楚了,先总结下FrameworkElement 类: “为 Windows Presentation Foundation (WPF) 元素提供 WPF 框架级属性集.事件集和方法集. 此类表示附带的 WPF 框架级实现,它是基于由 UI…
我们经常会抽取一些可重用的控件,某个属性是否需要重用,直接决定了这个属性的绑定方式. 1.完全不可重用的控件 有一些与业务强相关的控件,它们的属性完全来自ViewModel,越是相对复杂的控件,越容易这样.比如: // ChooseUc.xaml <UserControl> <StackPanel Orientation="Horizontal"> <Label Content="选择一个水果: "/> <ComboBox…
1.快捷生成依赖属性:propdp然后按两次tab键 2.应用场景:自定义控件 什么是依赖属性:依赖属性自己没有值,通过依赖别人(如Binding)来获得值. 依赖属性为什么会出现:控件常用字段有限,包装太多属性会占用过高内存,造成浪费.所以用依赖属性,用不着就不用,用得着就用. 怎么声明依赖属性:用public static readonly三个修饰符修饰. 怎么声明实例:使用DependencyProperty.Register方法生成.此方法有三个参数跟四个参数. 怎么操作依赖属性的值:利…
概述: Windows Presentation Foundation (WPF) 提供了一组服务,这些服务可用于扩展公共语言运行时 (CLR) 属性的功能.这些服务通常统称为 WPF 属性系统.由 WPF 属性系统支持的属性称为依赖项属性. 依赖项属性提供用来扩展属性功能的功能, 最常用的莫过于“数据绑定”功能,依赖项属性可以通过数据绑定来引用值.数据绑定通过特定的标记扩展语法(在 XAML 中)或 Binding 对象(在代码中)来工作.使用数据绑定,最终属性值的确定将延迟到运行时,在运行时…
Source = new BitmapImage( new Uri( WangCaiConfig.GetCurrentDirectory() + imgStr, UriKind.RelativeOrAbsolute))   this.PictureImage.Source = new BitmapImage( new Uri(img, UriKind.RelativeOrAbsolute)); Canvas.Right="10": Canvas.SetRight(stateImage,…
原文:WPF 4 DataGrid 控件(自定义样式篇)      在<WPF 4 DataGrid 控件(基本功能篇)>中我们已经学习了DataGrid 的基本功能及使用方法.本篇将继续介绍自定义DataGrid 样式的相关内容,其中将涉及到ColumnHeader.RowHeader.Row.Cell 的各种样式设置. ColumnHeaderStyle 属性      一般来讲列表头是用户首先注意的内容,那么如何在DataGrid 中设计一个美观的表头呢.我们既可以在<DataGr…
原文:WPF 4 DataGrid 控件(进阶篇一)      上一篇<WPF 4 DataGrid 控件(自定义样式篇)>中,我们掌握了DataGrid 列表头.行表头.行.单元格相关的自定义样式方法,本篇我们继续对自定义样式进行一些高级设置. DataGridTemplateColumn 类      除了下表所示的列类型外,我们还可以通过DataGridTemplateColumn 自定义列样式,为DataGrid 添加更完美的数据显示方式.      首先我们在类中添加ExamDate…
原文:WPF 4 DataGrid 控件(进阶篇二)      上一篇<WPF 4 DataGrid 控件(进阶篇一)>中我们通过DataGridTemplateColumn 类自定义编辑了日期列的样式,当然也可以根据个人需要设置任何样式模板.上例中Pass Exam 列显示学生是否通过考试,但我们并不知道该学生每门学科的成绩是多少.本篇将为DataGrid 行增加这些详细信息,使得DataGrid 数据更加充实. 首先,我们仍然先更新一下Member 类,增加Math 和History 两门…
原文:WPF 4 DataGrid 控件(基本功能篇)      提到DataGrid 不管是网页还是应用程序开发都会频繁使用.通过它我们可以灵活的在行与列间显示各种数据.本篇将详细介绍WPF 4 中DataGrid 的相关功能. 自定义列      默认情况下,当我们为DataGrid 控件设置ItemSource 属性后,DataGrid 会根据数据类型自动生成相应的列,下表列出DataGrid 支持的四种列及其数据类型.      在创建DataGrid 时可以通过AutoGenerate…
工作之余,学习下swift大法.把自己的学习过程分享一下.当中的布局很乱,就表在意这些细节了.直接上代码: UIButton+UILabel // // ViewController.swift // manyControl // // Created by shaoting on 16/3/23. // Copyright © 2016年 9elephas. All rights reserved. // /// swift控件篇 // UIButton // UILabel import U…
首先我们定义一个Student类,有ID,Name,Photo(保存图片路径). using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace BindingImage { public class Student { public int Id { get; set; } public string Nam…
英文原文:http://www.wpftutorial.net/PasswordBox.html 中文原文:http://blog.csdn.net/oyi319/article/details/6551532 WPF的PasswordBox控件的Password属性不是依赖属性,无法直接进行数据绑定,为使其在MVVM模式中正常使用,可以为PasswordBox增加一个助手类,代码如下: 注:代码摘自:http://www.wpftutorial.net/PasswordBox.html usi…
原文:WPF 学习笔记-设置属性使窗口不可改变大小 调整Windows下的ResizeMode属性: ResizeMode = NoResize Resize属性是控制Windows是否可以改变大小,怎样改变大小的属性.ResizeMode的所有枚举如下:   成员名称 说明   NoResize 无法调整窗口的大小.标题栏中不显示“最小化”和“最大化”按钮.   CanMinimize 只能最小化和还原窗口.同时显示“最小化”和“最大化”按钮,但只有“最小化”按钮处于启用状态.   CanRe…
原文:WPF中Image控件的Source属性 imgBook 是一个Image控件,在后台代码中我想给它指定Source的属性.我先如下方式进行: Uri uri = new Uri(strImagePath, UriKind.RelativeOrAbsolute); imgBook.Source = new BitmapImage(uri); strImagePath是图片的绝对路径. 在另一处代码中我想把strImagePath指定的图片删掉,操作如下: if (System.IO.Fil…
原文:WPF中PasswordBox控件的Password属性的数据绑定 英文原文:http://www.wpftutorial.net/PasswordBox.html 中文原文:http://blog.csdn.net/oyi319/article/details/6551532 WPF的PasswordBox控件的Password属性不是依赖属性,无法直接进行数据绑定,为使其在MVVM模式中正常使用,可以为PasswordBox增加一个助手类,代码如下: 注:代码摘自:http://www…
原文:WPF 精修篇 WPF嵌入Winfrom控件 先增加DLL 支持 使用  WindowsFormsHost 来加载Forms的控件 引用命名空间 xmlns:forms="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms" <WindowsFormsHost Grid.Column="1"> <forms:PropertyGrid x:Name="Pro…
1.后台代码实现绑定父控件的属性 RelativeSource rs = new RelativeSource(RelativeSourceMode.FindAncestor); //设定为离自己控件最近的第一层父控件 rs.AncestorLevel = ; //设定父控件为Gird类型 rs.AncestorType = typeof(Grid); //绑定源为Grid的名称 Binding binding = new Binding("Name") { RelativeSourc…
原文:WPF 学习笔记-在WPF下创建托盘图标 首先需要在项目中引用System.Windows.Forms,System.Drawing; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.…
深入理解MVC   MVC无人不知,可很多程序员对MVC的概念的理解似乎有误,换言之他们一直在错用MVC,尽管即使如此软件也能被写出来,然而软件内部代码的组织方式却是不科学的,这会影响到软件的可维护性.可移植性,代码的可重用性. MVC即Model.View.Controller即模型.视图.控制器.我在和同行讨论技术,阅读别人的代码时发现,很多程序员倾向于将软件的业务逻辑放在Controller里,将数据库访问操作的代码放在Model里. 最终软件(网站)的代码结构是,View层是界面,Con…
* 使用方法: *  前台页面调用方法,重置:    protected void Reset_Click(object sender, EventArgs e)        {            initControl(Page, "isClear");        } * 备注信息: 上传部分自己总结的常用方法的封装,有不足和不完美之处,希望大家指出来,愿意一起 * 主要研究erp,cms,crm,b2b,oa等系统和网站的开发,欢迎有共同追求和学的IT人员一起学习和交流.…
接上一篇博客初步探讨WPF的ListView控件(涉及模板.查找子控件)  我们继续探讨ListView的用法      一.实现排序功能 需求是这样的:假如我们把学生的分数放入ListView,当我们单机ListView头部时候实现对按分数的排序,更改Xaml如下: <Window x:Class="ContentDataTemplate.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/p…
http://www.cnblogs.com/Zhouyongh/archive/2011/08/01/2123610.html Style 用来在类型的不同实例之间共享属性.资源和事件处理程序,您可以将 Style 看作是将一组属性值应用到多个元素的捷径. 这是MSDN上对Style的描述,翻译的还算中规中矩.Style(样式),简单来说,就是一种对属性值的批处理,类似于Html的CSS,可以快速的设置一系列属性值到UI元素. 示例 一个最简单的Style的例子: 1: <Window> 2…
原文:潜移默化学会WPF(难点控件treeview)--改造TreeView(CheckBox多选择版本),递归绑定数据 目前自己对treeview的感慨很多 今天先讲 面对这种 表结构的数据 的其中一种绑定方法,后面多几列其他属性都没关系,例如多个字段, 1  A  0 2  B  0 3  C  0 4  D  1 5  E  2 6  F  4 7  G 1 ... 就是递归型的表结构 然后通过treeview 展示( treeview 的name 叫 tv , collection 是 …
原文:WPF 4 日历控件(Calendar)      在之前我已经写过两篇关于WPF 4 任务栏(Taskbar)相关的特性.相信自从VS2010 Beta 版放出后,WPF 的粉丝们肯定在第一时间了解了WPF 4 的一些新控件及新功能.赶在明天Visual Studio 2010 正式版发布前,我先来介绍一下WPF 4 中日历控件的一些功能及属性,就作为明天发布会的热身准备吧. 创建日历控件      在WPF ToolKit 中其实日历控件早已存在,对于WPF 4 中的日历控件创建起来也…
原文:Expression Blend学习四控件 Expression Blend制作自定义按钮 1.从Blend工具箱中添加一个Button,按住shift,将尺寸调整为125*125; 2.右键点击此按钮,选择Edit control parts(template)>Edit a copy... 3.在弹出的Create style resource对话框中,修改新按钮样式的名称 4.在左侧的Object and timeline面板中选中ContentPresenter元素,按Ctrl+X…
原文:Expression Blend学习5控件 Expression Blend ButtonStyle- TextButton 本章以TextButton为例,讲解如何最简单,最快速的制作一个专业的TextButton. 对于这个TextButton的需求是这样的,鼠标悬浮时,光标变为"手指",并改变按钮的前景色,鼠标按下时,有明显的按下的感觉. 都会遇到一个问题,ContentPresenter没有Foreground属性,如何改变前景色? 新建一个TextBlock,输入I'm…
写在前面:在(一)中,介绍了TreeView控件MVVM模式下数据绑定的方法.在这篇文章中,将总结给节点添加事件的方法,这样说有些不对,总之实现的效果就是点击某个节点,将出现对应于该节点的页面或者数据.(我这里用的方法肯定不是最好的,但是是我能想到的最佳方法了,WPF初学者,希望大家多多指教.) Example#1: 实现下图功能,点击左侧treeview姓名节点,在右侧会出现响应的detailed information. 可以将ID的textbox中的text属性绑定到treeview中Se…
数据绑定: 更新内容:补充在MVVM模式上的TreeView控件数据绑定的代码. xaml代码: <TreeView Name="syntaxTree" ItemsSource="{Binding TreeNodes}"> <TreeView.ItemTemplate> <HierarchicalDataTemplate DataType="{x:Type local:TreeNode}" ItemsSource=&…
当winform程序中新开一个线程,是无法改变主线程中窗体控件的属性的,否则运行时会报错. 若想在其他线程中控制主线程中的窗体控件,则必须利用BeginInvoke方法. 例如:添加一个名为textbox1的TextBox控件,想将它的Visible设置为false,则执行下面的代码即可 textbox1.BeginInvoke(new Action(() => { textbox1.Visible= false; })); 另外WPF中,想达到winform同样的效果,利用Dispatcher…
这篇博客将分享如何在WPF程序中使用Ribbon控件.Ribbon可以很大的提高软件的便捷性. 上面截图使Outlook 2010的界面,在Home标签页中,将所属的Menu都平铺的布局,非常容易的可以找到想要的Menu.在Outlook 2003时代,将Home下面的Menu都垂直的排列下来,操作的便捷程度降低了很多.Ribbon的布局会随着窗体的变化动态的调整. 上面的图片中标注了Ribbon的4个区块. 下面我们就在WPF中使用Ribbon控件来实现一个简单的界面. 1. 添加System…