《Programming WPF》翻译 第9章 1.自定义控件基础

简介: 原文:《Programming WPF》翻译 第9章 1.自定义控件基础在写一个自定义控件之前,你需要问的第一个问题是,我真的需要一个自定义控件吗?一个写自定义控件的主要原因是为了用户界面技术专家可以修改控件的外观,但是正如我们在前些章看到的,内容模型和模板意味着这通常是不必要的。
原文: 《Programming WPF》翻译 第9章 1.自定义控件基础

在写一个自定义控件之前,你需要问的第一个问题是,我真的需要一个自定义控件吗?一个写自定义控件的主要原因是为了用户界面技术专家可以修改控件的外观,但是正如我们在前些章看到的,内容模型和模板意味着这通常是不必要的。WPF提供了一个先进的按照规模的定制技术,你应该记住这些——当考虑写一个自定义控件时。

  1. 使用属性修改一个已有控件的外观
  2. 组合已有的一些控件
  3. 将内容嵌入已有控件
  4. 使用模板代替一个已有控件
  5. 创建一个自定义控件或其他自定义元素

这个顺序提供了渐增的能力级别,以每一级别上轻微的额外成效为交换。在这些简单的情形中,你可以通过设置属性来调整一个内嵌控件的行为和外观以满足你对的需求。下一步是将控件编译在一起,形成一个更强大的整体。你可以通过将内容嵌入另一个控件的方式,把这个合成物带入到下一步骤。你可以使用一个模板完全替换外观,正如第5章所描述的。一旦技术1-4都没有满足你的需求,编写一个自定义的元素就像自定义控件,看上去像是一个答案。

是否需要写一个新的可视化元素类型,一个重要的指示是,你是否计划添加一个新的API特性。即使在这种情形,你应该仔细的考虑要写哪一种自定义元素类型,控件并不是唯一的元素种类。通过写一个底层的组件,并集成到已知控件中的外观中,你可以得到更多的弹性。例如,大量的使WPF弹性化的元素,如布局类和Shapes,派生于FrameworkElement,实际上并不是控件——它们不是从Control基类派生的。

如果你确定一个自定义元素使最好的进行办法,你需要做完大量的设计步骤。首先,你必须挑选出基类。它会派生自FrameworkElementControl,或WPF提供的其它基类型之一么?然后你必须定义API,决定你的组件哪个属性,事件和命令。最后,如果你的新元素提供了与内嵌组件相同的弹性,你需要注意元素和其模板间的接口。


目录
相关文章
WPF自定义控件05:ToggleButton
本文重点介绍WPF中如何实现自定义ToggleButton控件,它是一个开关控件,通过单击来进行状态的快速切换。
4284 0
WPF自定义控件05:ToggleButton
|
1月前
|
文字识别 C# 开发者
WPF开源的一款免费、开箱即用的翻译、OCR工具
WPF开源的一款免费、开箱即用的翻译、OCR工具
|
6月前
|
人工智能 C#
WPF自定义控件库之Window窗口
本文以自定义窗口为例,简述WPF开发中如何通过自定义控件来扩展功能和样式,仅供学习分享使用,如有不足之处,还请指正。
154 5
|
XML C# 数据格式
WPF中用户控件和自定义控件
无论是在WPF中还是WinForm中,都有用户控件(UserControl)和自定义控件(CustomControl),这两种控件都是对已有控件的封装,实现功能重用。但是两者还是有一些区别,本文对这两种控件进行讲解。
|
C# 容器
WPF自定义控件10:FlatListView
在不少的应用程序中,有时候需要使用ListView控件来显示一组集合数据,这样可以从一组数据中进行选择,让数据更加的规范,便于统计和分析。本文将介绍一下自定义的列表控件FlatListView,它与FlatCheckBox实现过程非常类似,它是继承自ListView,但使用自定义的UI样式来美化界面。
520 0
WPF自定义控件10:FlatListView
WPF自定义控件09:FlatWaveButton
按钮在很多应用程序中都是必不可少的控件,如果给按钮控件添加一些动画效果,比如单击它后会显示一个水波纹扩散的动画效果,那么感觉上更加的高级。本文将介绍一下自定义水波纹按钮控件FlatWaveButton,它是一个UserControl(FlatButton)控件,自身携带UI样式和后台逻辑。
562 0
WPF自定义控件09:FlatWaveButton
|
Web App开发 C#
WPF自定义控件08:FlatRoundImage
在不少的应用程序中,用户中心的个人页面经常需要显示头像,这个当前主流的做法就是用户上传一个图片,系统进行截取并显示为一个圆形的轮廓,即圆形的照片。本文将介绍一下自定义的图片控件FlatRoundImage,它是一个UserControl控件,自身携带UI样式和后台逻辑。
612 0
WPF自定义控件08:FlatRoundImage
WPF自定义控件07:FlatTextBox
本文将介绍一下自定义的文本框控件FlatTextBox,它与FlatCheckBox实现过程非常类似,它是继承自TextBox,但使用自定义的UI样式来美化界面,并添加了特有的一些依赖属性。
468 0
WPF自定义控件07:FlatTextBox
|
数据可视化 前端开发 C#
WPF自定义控件的三种方式
某些场景下,我们确实需要创建新的控件。此时,理解 WPF不同控件的创建方法就显得非常重要。 WPF 提供3个用于创建控件的方法,每个方法都提供不同的灵活度。
791 1
WPF自定义控件的三种方式
WPF自定义控件06:FlatComboBox
在不少的应用程序中,经常需要使用下拉框(ComboBox)控件来从类别字段中选择,这样可以限定值的范围,让数据更加的规范,便于统计和分析。本文将介绍一下自定义的下拉框控件FlatComboBox,它与FlatCheckBox实现过程非常类似,它是继承自ComboBox,但使用自定义的UI样式来美化界面。下面将详细介绍具体的实现细节。
756 0
WPF自定义控件06:FlatComboBox