WPF控件自绘——基础,Control类的定义

用于记录自己的学习WPF控件,大神请飘过。。。

【WPF控件类继承关系图】

所有可以自定义模版的控件都是从Control继承,所以我们来看看Contorl类里面到底有些什么。为以后的控件自定义模版做好准备。废话少说先来看看WPF中Control类的定义

 1 namespace System.Windows.Controls
 2 {
 3   public class Control : FrameworkElement
 4   {
 5     public static readonly DependencyProperty BorderBrushProperty;
 6     public static readonly DependencyProperty BorderThicknessProperty;
 7     public static readonly DependencyProperty BackgroundProperty;
 8     public static readonly DependencyProperty ForegroundProperty;
 9     public static readonly DependencyProperty FontFamilyProperty;
10     public static readonly DependencyProperty FontSizeProperty;
11     public static readonly DependencyProperty FontStretchProperty;
12     public static readonly DependencyProperty FontStyleProperty;
13     public static readonly DependencyProperty FontWeightProperty;
14     public static readonly DependencyProperty HorizontalContentAlignmentProperty;
15     public static readonly DependencyProperty VerticalContentAlignmentProperty;
16     public static readonly DependencyProperty TabIndexProperty;
17     public static readonly DependencyProperty IsTabStopProperty;
18     public static readonly DependencyProperty PaddingProperty;
19     public static readonly DependencyProperty TemplateProperty;//以上为依赖属性的定义,主要看下面的这些属性和方法
20     public static readonly RoutedEvent PreviewMouseDoubleClickEvent;
21     public static readonly RoutedEvent MouseDoubleClickEvent;//以上两个为路由事件
22     public Control();//模版发生改变时调用此事件
23     protected virtual void OnTemplateChanged(ControlTemplate oldTemplate, ControlTemplate newTemplate);
24     public override string ToString();
25     protected virtual void OnPreviewMouseDoubleClick(MouseButtonEventArgs e);
26     protected virtual void OnMouseDoubleClick(MouseButtonEventArgs e);
27     protected override Size MeasureOverride(Size constraint);
28     protected override Size ArrangeOverride(Size arrangeBounds);
29     [Bindable(true)]
30     [Category("Appearance")]
31     public Brush BorderBrush { get; set; } //边框颜色画刷
32     [Bindable(true)]
33     [Category("Appearance")]
34     public Thickness BorderThickness { get; set; } //边框大小
35     [Bindable(true)]
36     [Category("Appearance")]
37     public Brush Background { get; set; }   //背景颜色
38     [Category("Appearance")]
39     [Bindable(true)]
40     public Brush Foreground { get; set; }    //前景颜色
41     [Bindable(true)]
42     [Category("Appearance")]
43     [Localizability(LocalizationCategory.Font)]
44     public FontFamily FontFamily { get; set; }  //字体
45     [Category("Appearance")]
46     [Localizability(LocalizationCategory.None)]
47     [TypeConverter(typeof (FontSizeConverter))]
48     [Bindable(true)]
49     public double FontSize { get; set; }  //字体大小
50     [Bindable(true)]
51     [Category("Appearance")]
52     public FontStretch FontStretch { get; set; } //字体拉伸描述字体形状从其普通纵横比拉伸的程度,普通纵横比是为字体中的标志符号指定的宽度与高度的原始比例。
53     [Bindable(true)]
54     [Category("Appearance")]
55     public FontStyle FontStyle { get; set; }  //字体风格 ,设置字体的倾斜特性
56     [Category("Appearance")]
57     [Bindable(true)]
58     public FontWeight FontWeight { get; set; } //字体加粗效果
59     [Category("Layout")]
60     [Bindable(true)]
61     public HorizontalAlignment HorizontalContentAlignment { get; set; }  //这个属性用来设置该控件相对父控件的横向摆放位置,而不是控件内的内容的摆放位置
62     [Bindable(true)]
63     [Category("Layout")]
64     public VerticalAlignment VerticalContentAlignment { get; set; }
65     [Category("Behavior")]
66     [Bindable(true)]
67     public int TabIndex { get; set; }  //支持Tab键切换焦点,用来设置tab键切换的顺序
68     [Category("Behavior")]
69     [Bindable(true)]
70     public bool IsTabStop { get; set; } //用来控制是否接受tab键的焦点切换
71     [Category("Layout")]
72     [Bindable(true)]
73     public Thickness Padding { get; set; } //控件内的内容与控件的边界的间距//模版属性,后面在自绘控件时再详细介绍。
74     public ControlTemplate Template { [TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")] get; set; }
75     protected internal virtual bool HandlesScrolling { get; }  //获取一个值,该值指示组合框是否支持滚动。
76     public event MouseButtonEventHandler PreviewMouseDoubleClick;
77     public event MouseButtonEventHandler MouseDoubleClick;
78   }
79 }

以上属性都比较简单,就只简单介绍下,在我们自绘控件时知道有这些属性就好了。

时间: 2024-08-11 00:07:34

WPF控件自绘——基础,Control类的定义的相关文章

跟我一起学WPF(3):WPF控件基础

WPF控件简介 通过上一篇XAML语言的介绍,我们知道,XAML是一个树形结构,同样,WPF控件作为构成整个XAML树的一部分,也是一个树形结构.我们看一个简单的例子. <Button.Content> <DockPanel> <Image Source="F:\01.Code\01.MyCode\WpfApplication1\WpfApplication1\Resources\荷.jpg" Width="30"/> <T

wpf控件开发基础

wpf控件开发基础(3) -属性系统(2) http://www.cnblogs.com/Clingingboy/archive/2010/02/01/1661370.html 这个有必要看看

WPF 控件与布局

[控件到底是什么?] 程序的本质就是"数据+算法"------用户输入原始的数据,算法处理原始数据并得到结果数据.问题就在于程序如何将结果数据显示给用户.同样一组数据,你可以使用LED阵列显示出来,或者以命令行模式借助各种格式控制符(如TAB)对齐并输出,但这些都不如图形界面(GUI  Graphic User Interface)来的友好和方便.GUI的方便在于它对数据展示的直观性,程序员可以通过编程的方式将数据通过图形的方式展示出来,从而避免了用户面对一大堆复杂数据的痛苦.提高了工

wpf控件设计时支持(3)

原文:wpf控件设计时支持(3) wpf设计时调试 编辑模型 装饰器 1.wpf设计时调试 为了更好的了解wpf设计时框架,那么调试则非常重要,通过以下配置可以调试控件的设计时代码 (1)将启动项目配置成外部的visual studio ide启动程序devenv.exe (2)F5启动调试然后会打开一个新的visual studio ide,这个时候要记得重新打开你要调试的那个项目. 以上两个步骤就可以实现设计时调试了 2.编辑模型体系 当选中某些控件出现的设计时,这个选中的控件便成了可编辑的

WPF学习系列之五(WPF控件)

控件:    1.内容控件------这些控件能够包含嵌套的元素,为它们提供几乎无限的显示能力.内容控件包括Lable,Button 以及ToolTip类. 内容控件是更特殊的控件类型,它们可以包含(并显示)一块内容.从技术角度来讲,内容控件是可以包含单个嵌套元素的控件.与布局容器不同的是内容控件只能包含一个子元素,而布局控件只要愿意可以包含任意多个嵌套元素.              提示:当然,仍然可以在单个内容控件中放置大量内容-----诀窍是使用单个容器,比如,使用StackPanel面

第9章 子窗口控件_9.4-9.6滚动条类、编辑框类、列表框类

9.4 滚动条类 9.4.1 滚动条控件 (1)窗口滚动条与滚动条控件的比较 窗口滚动条 滚动条控件 消息 发送WM_VSCROLL.WM_HSCROLL消息.不发送WM_COMMAND消息.wParam参数的意义是一样的.lParam:当消息来自窗口滚动条时为NULL,来自滚动条控件时为滚动条的句柄. 宽度或高度 固定大小 //水平滚动条高度 GetSysMetrics(SM_CYHSCROLL); //垂直滚动条宽度 GetSysMetrics(SM_CYVSCROLL) 1.大小.位置均可

WPF控件到图片的转换

在实际的项目开发中,经常需要将信息保存成图片的形式,如屏幕截图.地图快照等操作,我中最近一个项目中便有这样的需求,项目(WPF)中用到GMap.NET控件,中地图上展示一些信息,过程中可能用户需要将地图信息保存下来,也就是地图快照,我的界面如下所示: 网上查了GMap相关的资料,没有找到GMap怎么截图的方法,最后找到网友提供的方法:将WPF控件转换成图片. 具体实现如下: namespace QACDR2.Common { internal enum ImageType { Bmp, Gif,

深入Windows窗体原理及控件重绘技巧

之前有学MFC的同学告诉我觉得Windows的控件重绘难以理解,就算重绘成功了还是有些地方不明白,我觉得可能很多人都有这样的问题,在这里我从Windows窗体的最基本原理来讲解,如果你有类似的疑惑希望这篇文章可以帮你解惑. 1.Windows窗体原理 首先,如果看过Win32 SDK编程的都知道Windows的三大核心系统:负责窗口对象产生和消息分发的USER模块,负责图像显示绘制的GDI模块,负责内存.进程.IO管理的KERNEL模块.试想象一下如何在一个像素阵列上产生窗口对象,其实就是使用G

DevExpress v15.1:WPF控件升级(四)

<下载最新版DevExpress WPF Controls v15.1.5> WPF编辑器 在Token编辑器中的Per-Pixel滚动 水平和垂直的per-pixel滚动 渐进式搜索 查找和组合框编辑器:在只读模式中渐进式搜索. WPF Tab Control Web浏览器的分页用户界面 在新的版本中,我们的WPF Tab控件可用于创建具有分页用户界面的应用程序--如同那些在当代Web浏览器中的应用程序一样.新功能包含了一个新的DXTabbedWindow组件,支持最终用户拖拽.自定义用户界