【WPF学习】第六十三章 理解WPF中的自定义元素

尽管可在任意WPF项目中编写自定义元素,但通常希望在专门的类库程序集(DLL)中放置自定义元素。这样,可在多个WPF应用程序之间共享自定义元素。为确保具有正确的程序集引用和名称空间导入,当在Visual Studio中创建应用程序时,应当选择Custom Control Library(WPF)项目类型。在类库中,可创建任意数量的控件。创建自定义控件的第一步是选择正确的基类进行继承。下表列出了创建自定义控件时一些常用的基类。名 称 说    明FrameworkElement当创建自定义元素时,这是最常用的最低级的基类。通常,只有当希望重写OnRender()方法并使用System.Windows.Media.DrawingContext从头绘制内容时,才会使用这种方法。Control当从头开始创建控件时,这是最常用的起点。该类是所有用户交互小组件的基类。Control类添加了用于设置背景、前景、字体和内容对齐方式的属性。控件类还为自身设置了Tab顺序(通过IsTabStop属性),并且引入了鼠标双击功能(通过MouseDoubleClick和PreviewMouseDoubleClick属性)。但最重要的是,Control类定义了Template属性,为了得到无限的灵活性。该属性允许使用自定义元素树替换其外观。ContentControl这是能够显示任意单一内容的控件的基类。显示的内容可以是元素或结合使用模板的自定义对象(内容通过Content属性设置,并且可以通过ContentTemplate属性提供可选的模板)。许多控件都封装了特定的、类型在一定范围内的内容(例如,文本框中的文本字符串)。因此这些控件不支持所有元素,所以不是内容控件。UserControl这是可使用设计视图进行配置的内容控件。尽管用户控件和普通的内容控件是不同的,但当希望在多个窗口中快速重用用户界面中的不变模块时(而不是创建真正的能在不同应用程序之间转移的独立控件),通常使用该基类ItemControl或SelectorItemsControl是封装项列表的控件的基类,但不支持选择,而Selector类是支持选择的控件的更具体基类。创建自定义控件不经常使用这些类,因为ListBox、ListView以及TreeView控件的数据绑定特性提供了很大的灵活性Panel该类是具有布局逻辑控件的基类。布局控件能够包含多个子元素,并根据特定的布局语义安排这些子元素。通常,面板提供了用于设置子元素的附加属性,配置如何安排子元素Decorator封装其他元素的元素基类,并且提供了一种图形效果或特定的功能。两个明显的例子是Border和ViewBox,其中Border控件在元素的周围绘制线条,ViewBox控件使用变换动态缩放其内容。其他修饰元素包括为普通控件(如按钮)提供熟悉边框和背景色的修饰类特殊控件类如果希望改进现有控件,可直接继承该控件。例如,可创建具有内置验证逻辑的TextBox控件。然而,在采取这一步之前,应当首先分析是否可通过事件处理代码或单独的组件达到同一目的。这两种方法都可使自定义逻辑和控件相分离,从而可在其他控件中重用

接下来将看到一个用户控件,一个直接继承自Contrl类的无外观的颜色拾取器,一个使用可视化状态的无外观的的FlipPanel,一个自定义的布局面板,以及一个继承自FrameworkElement类并重写了OnRender()方法的自绘制元素。

(0)

相关推荐

  • 【WPF学习】第六十章 创建控件模板

    经过数十天的忙碌,今天终于有时间写博客. 前面一章通过介绍有关模板工作方式相关的内容,同时介绍了FrameWorkElement下所有控件的模板.接下来将介绍如何构建一个简单的自定义按钮,并在该过程中 ...

  • VBA专题10-9:使用VBA操控Excel界面之在功能区中添加自定义按钮控件

    excelperfect 下面的一系列文章将重点讲解如何在功能区中添加不同类型的自定义控件,它们与最底层的自定义命令相关.这里的自定义命令是指程序员自已编写的VBA过程. 添加按钮 如果要在内置功能区 ...

  • 【WPF学习】第六十八章 自定义绘图元素

    上一章分析了WPF元素的内部工作元素--允许每个元素插入到WPF布局系统的MeasureOverride()和ArrangeOverride()方法中.本章将进一步深入分析和研究元素如何渲染自身. 大 ...

  • 老子道德经第六十三章原文及译文

    [原文] 为无为,事无事,味无味①.大小多少②.报怨以德③.图难于其易,为大于其细:天下难事,必作于易:天下大事,必作于细.是以圣人终不为大④,故能成其大.夫轻诺必寡信,多易必多难.是以圣人犹难之,故 ...

  • 刀神传说第六十三章沐诗瑶篇(10)

    [作者:高依弟] 黎老汉老泪纵横,激动道:"小姑娘,我到哪里可以见到我徒儿阿三一面?" 沐诗瑶见黎老汉神态,也泛起泪花,叹道:"据刀神夫人柳如是说已经失踪三个月了,至今杳 ...

  • 《广州棋坛六十年》第六十三章 广东棋王连克湖北名将

    第六十三章 广东棋王连克湖北名将 在广州举行的华南名手与华东.华中名手比赛,进入第五局,卢辉对罗天扬.他们两人都在首战中失利,卢辉因轻敌败给方绍钦,罗天扬败给冯敬如,一分都没有拿到,因而两人对于第二回 ...

  • 《道德经》第六十三章《能成其大》悟读述杂【63】

    《道德经》第六十三章《能成其大》悟读述杂【63】

  • 阴魂不散●第六十三章 无法破解的奇案

    (朗读者:自洽) 欢迎关注佳丽世界,以方便<阴魂不散>小说阅读收听. 刘畅无奈地说:"现在我没有办法提供任何我的身份证明.因为我在执行一项秘密任务." 顾维之不屑地说: ...

  • 道德经第六十三章——为无为

    老子这一章节,是继续对无为这一概念的延伸,无为无不为,但无为又是为的,那么无为究竟是无为还是有为呢? 先贴下原文: 为无为,事无事,味无味.大小多少.报怨以德.图难于其易,为大于其细:天下难事,必作于 ...

  • 《广州棋坛六十年》第一百六十三章 杨官麟、陈松顺初访上海

    第一百六十三章 杨官麟.陈松顺初访上海 一九四九年十月,新中国诞生.在这新旧更迭的伟大时刻,棋坛活动也结束了旧的史页,展开了新的篇章.广州棋坛在解放后的第一件事,是杨官麟从香港回广州,为开展祖国的棋艺 ...

  • 长篇小说《瞒天诀》连载第六十三章

    第六十三章  宝扇涅槃留仙遗  刻钟重生再晋阶 秦刻钟感慨了一番后,便瞬移去衙门. 查五客气中带丝忌惮地接待了他,聊了些没有"盐味"的闲话. 秦刻钟见查五态度如此,恭敬有余,贴心不 ...

  • 《燕祈儿》第六十三章 旅途结束

    第六十三章 旅途结束 "冰篁,你又在骗小孩子了!"一个清朗的声音说. 祈儿和竹青青闻声望去,只见河边不知什么时候立了一个颀长的身影,白衣白发,飘然若仙. 竹青青大笑道:" ...