博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
VS下WPF自定义控件的基本步骤和基本代码实现
阅读量:7072 次
发布时间:2019-06-28

本文共 1344 字,大约阅读时间需要 4 分钟。

一、自定义控件的基本步骤:

(本示例项目名称为:W;添加的自定义控件名称为)

 

1、  在“解决方案资源管理器”窗口的项目名上: 右击à添加à新建项(Ctrl+Shift+A)

 

2、则会弹出如下窗口,在该窗口中选择“自定义控件(WPF)”并修改类“名称”,点击“添加”

  

 

 

 

 

 

 

 

 

 

 

 

 

 

3、添加成功后则会在该项目中生成CustomControl4.cs文件和Themes文件夹下的Generic.xaml文件(若已存在,则不会重新生成,只会在该文件中生成相应的XAML标记),

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4、WPF架构内部已经将CustomControl4.cs文件和Generic.xaml文件进行了关联,在CustomControl4.cs文件的CustomControl4类(该类的可以继承自任意一个父类并继承其父类的属性)中进行属性设置和逻辑实现,在Generic.xaml文件中进行控件的Style和Template的设计

5、在使用该控件时需在APP.xaml中导入Generic.xaml文件

 

 

 

 

 

 

 

 

6、到此步已经可以在本项目中使用该控件了

 

二、自定义属性的基本实现:

1、如图,本例中将CustomControl4类的父类修改为了Button类,并添加了DirectionBackgroundL和DirectionBackgroundR两个属性,这两个属性分别用来控制Generic.xaml中style中ControlTemplate里的两个Rectangle的Fill属性

 

① 注册该属性(以DirectionBackgroundL为例):

publicstaticreadonlyDependencyPropertyDirectionBackgroundLProperty = DependencyProperty.Register("DirectionBackgroundL", typeof(Brush),typeof(CustomControl4),newPropertyMetadata((Brush)m_fwkElement.TryFindResource("@Blue")));

该函数

第一个参数是注册的依赖项属性的名称

第二个是注册的依赖项属性的类型

第三个是示该依赖项属性的所有者的类型

第四个是该依赖项属性的元数据,即为默认数据

 

② 在类中声明该属性,并实现其get,set:

public Brush DirectionBackgroundL

{

get { return (Brush)GetValue(DirectionBackgroundLProperty); }

set { SetValue(DirectionBackgroundLProperty,value); }

}

其中①②书写不分先后顺序

 

2、  在Generic.xaml文件中,在添加自定义控件时系统已经自动为新添加的控件添加了Style模板

 

可在该模板的基础上继续自定义你自己想要的控件

  

图中红色框内就是要绑定的属性,属性绑定完成即可在界面设计时使用该控件。

 

 本文主要针对基础知识,如有不足之处望不吝赐教,谢谢!

 

转载于:https://www.cnblogs.com/boxuan-Blog/p/8422604.html

你可能感兴趣的文章
你真的已经搞懂JavaScript了吗?
查看>>
个性化PS1变量
查看>>
IOS之UIWebView的使用
查看>>
分布式系统事务一致性解决方案
查看>>
ubuntu下nvm,node以及npm的安装与使用
查看>>
BD09坐标(百度坐标) WGS84(GPS坐标) GCJ02(国测局坐标) 的相互转换
查看>>
BaseAdapter封装
查看>>
java输入输出专题--第二部分
查看>>
写了一个求质数的算法,Mark一下
查看>>
MSGFMT po/de.msg make[1]: *** [po/de.msg] Error 12
查看>>
getaddrinfo()
查看>>
如何判断微信内置浏览器
查看>>
启动线程的方式?
查看>>
LinkedList源码分析
查看>>
OCS inventory NG -Glpi 安装日志
查看>>
Linux中变量$#,$@,$0,$1,$2,$*,$$,$?的含义
查看>>
如何通过配置来实现IP+MAC+端口绑定功能
查看>>
FileMaker批量生成Word文档,带进度条
查看>>
Install OpenCV 2.4.9 in Ubuntu 14.04, 13.10
查看>>
高性能的MySQL(6)查询执行机制(上)
查看>>