引言

WPF中微软提供了一些基本的控件,但是工作中这些基础的控件往往不能满足我们的需求,这个时候我们就需要根据实际的需求去开发自己的控件,但要注意不是所有功能不满足的情况都需要通过自定义控件来实现。实际上一旦用到自定义控件,说明WPF提供的Style,Datatemplate,ControlTemplate的特性已不能满足我们的需求啦。

自定义控件简介

继承的父类型 优点 缺点
UserControl 和创建普通的WPF界面一样简单,可以直接使用Events
无需支持复杂的用户自定义
只能使用已有的控件
Control 用户能够通过ControlTemplate自定一外观
控件能够支持不同的主题(Theme)
通过Commands和Binding代替Events确保UI和逻辑(Logic)分离,并且避免使用直接引用ControlTemplate中UI元素
需要实现支持复杂的用户自定义
FrameworkElement 比前两者更精细的控制控件的外观
可以通过自定渲染逻辑(Render)控件的外观。
 

自定控件的基本步骤

总结

参考

Control Customization

[WPF]ListView点击列头排序功能实现

编写一个“绑定友好”的WPF控件

控件创作概述

Writing a Reusable Custom Control in WPF

Creating Customized UserControls (Deriving from ContentControl) in WPF 4

Understanding MeasureOverride and ArrangeOverride

How to Create a WPF Custom Control

转载于:https://www.cnblogs.com/HQFZ/p/4486189.html

WPF系列 自定控件相关推荐

  1. 无废话WPF系列5:控件派生图

    1. WPF类控件的派生关系图,紫色的部分开始才算是进入WPF的框架里. 2. WPF控件图 WPF的UI控件主要有以下类型,ContentControl, HeaderedContentContro ...

  2. WPF基础系列二:控件简介

    控件简介 文章目录 控件简介 前言 一.控件 二.控件类型 三.控件详解 1.ContentControl 类 2.HeaderedContentControl 类 3.ItemsControl 类 ...

  3. 【转】WPF从我炫系列3---内容控件的用法

    今天我来给大家讲解WPF中内容控件的用法,在WPF中的内容控件,通俗的讲,是指具有Content属性的控件,在content属性里面可以嵌套放置任意其他类型的控件,但是Content只能接受单个元素, ...

  4. C# wpf 实现Canvas内控件拖动

    系列文章目录 第一章 Grid内控件拖动 第二章 Canvas内控件拖动(本章) 第三章 任意控件拖动 第四章 窗口拖动 第五章 附加属性实现任意拖动 文章目录 系列文章目录 前言 一.如何实现? 1 ...

  5. 在WPF中使用WinForm控件方法

    在WPF中使用WinForm控件方法 原文:在WPF中使用WinForm控件方法 1.      首先添加对如下两个dll文件的引用:WindowsFormsIntegration.dll,Syste ...

  6. Wpf使用Winform控件后Wpf元素被Winform控件遮盖问题的解决

    Wpf使用Winform控件后Wpf元素被Winform控件遮盖问题的解决 参考文章: (1)Wpf使用Winform控件后Wpf元素被Winform控件遮盖问题的解决 (2)https://www. ...

  7. WPF IP地址输入控件的实现

    WPF IP地址输入控件的实现 原文:WPF IP地址输入控件的实现 一.前言 WPF没有内置IP地址输入控件,因此我们需要通过自己定义实现. 我们先看一下IP地址输入控件有什么特性: 输满三个数字焦 ...

  8. .net组件开发系列之武术系列 武术招数 控件生命周期与控件事件机制

    .net组件开发系列之武术系列 武术招数 控件生命周期与控件事件机制一.控件生命周期 先回述上篇,可能表述没有不清晰,也可能跨度大了点,好的,我们来一个循序渐进过程,大家都知道,武术都有招术的,先出什 ...

  9. WPF 绑定StaticResource到控件的方法

    WPF 绑定StaticResource到控件的方法 原文:WPF 绑定StaticResource到控件的方法 资源文件内的属性能否直接通过绑定应用到控件?答案是肯定的. 比如,我们要直接把下面的& ...

最新文章

  1. 谁是卧底的Android应用 (原型源码)
  2. C# 修改项目文件夹名称完全版
  3. 【渝粤教育】国家开放大学2018年春季 0463-22T英语语音 参考试题
  4. python中if语句使用_如何在python中使用'空if语句'?
  5. 信号角度分析评估因子表现(无限资金回测模型)
  6. 读《Java编程思想第五版》心得体会
  7. VC2015解决方案管视图中没有外部依赖项、头文件、源文件、资源文件,提供一个本人解决的办法以及总结网上零零散散的方法给后来者提供一个参考
  8. Markdown常用数学符号
  9. YourTTS论文阅读
  10. 元数建模工具chiner
  11. idea社区版激活_使用IntelliJ IDEA社区版代替付费版
  12. Android客户端支付宝支付
  13. 用两个小例子来解释单例模式中的“双重锁定”
  14. 洛谷P2058 海港(模拟,优先队列)
  15. Android:音乐播放器(3)—从播放列表到播放歌曲
  16. 嵌入式应用层开发应该学习什么?
  17. 高分七号(GF-7)
  18. matlab jpg合成gif,用MATLAB将照片合成视频或者GIF图片、以及Photoshop制作GIF图片
  19. CRM定义、边界和分类
  20. 爱情 不是一个人的事

热门文章

  1. Shell的 for 循环小例子
  2. 关于C#序列化结果的长度获取
  3. C# 调用FLashPaper2(二)
  4. 微信小程序 悬浮按钮
  5. 卡巴绿杀6 By Moshow魔手
  6. Linux 多核下绑定硬件中断到不同 CPU(IRQ Affinity)
  7. Win10 IIS本地部署网站运行时图片和样式不正常?
  8. 流控思路——多消费者定量生产(第100篇)
  9. 你好,C++(34)有一只叫做多利的羊 6.2.4 拷贝构造函数
  10. java代码做repeat次运算,从键盘输入几个数,比最值