WPF组件开发之组件的基类
之前在网上看到很多关于组件开发的资料,但真正可以用到框架内的却很少。今天贴出自己做的组件,并适合大部分框架的代码。
组件开发需要先做出组件的基类,然后由其他的各类组件去继承这个基类,下面是组件基类的代码。
组件基类:
public abstract class Component
{
public abstract string Name { get; }
public abstract string Icon { get; }
public abstract string Description { get; } public abstract ComponentEvent ComponentEvent
{
get;
} public abstract ComponentProperty ComponentProperty
{
get;
} public abstract UIElement CreateUIElement();
}
组件基类的属性:
public abstract class ComponentProperty : INotifyPropertyChanged
{
private double width;
private double height;
private double left;
private double top;private string name; [Category("基本")]
[Description("名称")]
public string Name
{
get { return name; }
set
{
if (name == value) return;
name = value;
OnPropertyChanged("Name");
}
} [Category("大小")]
[Description("宽度")]
public double Width
{
get { return width; }
set
{
if (width == value) return;
width = value;
OnPropertyChanged("Width");
}
} [Category("大小")]
[Description("高度")]
public double Height
{
get { return height; }
set
{
if (height == value) return;
height = value;
OnPropertyChanged("Height");
}
} [Category("位置")]
[Description("距左")]
public double Left
{
get { return left; }
set
{
if (left == value) return;
left = value;
OnPropertyChanged("Left");
}
} [Category("位置")]
[Description("距上")]
public double Top
{
get { return top; }
set
{
if (top == value) return;
top = value;
OnPropertyChanged("Top");
}
} #region INotifyPropertyChanged Members
//属性的监听事件
public event PropertyChangedEventHandler PropertyChanged; protected void OnPropertyChanged(string propertyName)
{
if (string.IsNullOrEmpty(propertyName)) throw new ArgumentNullException("propertyName");
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
} #endregion
}
组件基类的事件:
public abstract class ComponentEvent : INotifyPropertyChanged
{
#region 这个可以去掉
private string _Click; public string Click { get{return _Click;} set{ if(_Click==value)return;
_Click=value;
OnPropertyChanged("Click");
} } public void OnClick(object sender,RoutedEventArgs e) { if(Click!=null){ //事件的处理
} }
#endregion
#region INotifyPropertyChanged Members
//监听事件
public event PropertyChangedEventHandler PropertyChanged; protected void OnPropertyChanged(string propertyName)
{
if (string.IsNullOrEmpty(propertyName)) throw new ArgumentNullException("propertyName");
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
} #endregion
}
以上是组件的基类,组件基类打包为模板以及组件开发请关注后续章节,加群可优先哦。
WPF、AE技术交流群:94234450
点击加入QQ群:
WPF组件开发之组件的基类的更多相关文章
- Filter组件开发中的SDK基类分析
DirectShow SDK提供了一套开发Filter的基类源代码.基于这些基类开发Filter将大大简化开发过程. 1.CBaseObject 大部分SDK类都从CBaseObject类(参见com ...
- moviepy音视频开发:音频剪辑基类AudioClip
☞ ░ 前往老猿Python博文目录 ░ 一.背景知识介绍 1.1.声音三要素: 音调:人耳对声音高低的感觉称为音调(也叫音频).音调主要与声波的频率有关.声波的频率高,则音调也高. 音量:也就是响度 ...
- [js开源组件开发]query组件,获取url参数和form表单json格式
query组件,获取url参数和form表单json格式 距离上次的组件[js开源组件开发]ajax分页组件一转眼过去了近二十天,或许我一周一组件的承诺有了质疑声,但其实我一直在做,只是没人看到……, ...
- WPF 之 创建继承自Window 基类的自定义窗口基类
开发项目时,按照美工的设计其外边框(包括最大化,最小化,关闭等按钮)自然不同于 Window 自身的,但窗口的外边框及窗口移动.最小化等标题栏操作基本都是一样的.所以通过查看资料,可按如下方法创建继承 ...
- 小白学习vue第五天(理解使用组件开发,组件第一弹)
组件怎么从创建到使用? 第一步创建组件构造器对象 感觉个人理解就是创建一个模板,和创建MongoDB数据模板相似 const cpnC = Vue.extend({ template: ` <d ...
- moviepy音视频开发:音频剪辑基类AudioClip详解
☞ ░ 前往老猿Python博文目录 ░ 一.背景知识介绍 1.1.声音三要素: 音调:人耳对声音高低的感觉称为音调(也叫音频).音调主要与声波的频率有关.声波的频率高,则音调也高. 音量:也就是响度 ...
- javascript组件开发
最近忙于重构项目,今天周末把在重构中的一些思想记记: 一.javascript的组件开发:基类的封装 由于这次重构项目需要对各种组件进行封装,并且这些组件的实现方式都差不多,所以想到对组件封装一个ba ...
- 汉王云名片识别(SM)组件开发详解
大家好,最近在DeviceOne平台上做了一个汉王云名片识别的功能组件.下面把我开发过程给大家做一个分享,希望可以帮助到大家. 下面我把我的思路给大家讲解一下. 1.找到我要集成的sdk,也就是汉 ...
- [转]详解C#组件开发的来龙去脉
C#组件开发首先要了解组件的功能,以及组件为什么会存在.在Visual Studio .NET环境下,将会有新形式的C#组件开发. 组件的功能 微软即将发布的 Visual Studio .NET 将 ...
随机推荐
- Docker日志自动化: ElasticSearch、Logstash、Kibana以及Logspout
http://www.open-open.com/lib/view/open1432107136989.html
- POJ 2528 Mayor's posters(线段树)
点我看题目 题意 :建一堵墙粘贴海报,每个候选人只能贴一张海报,海报的高度与墙一样高,一张海报的宽度是整数个单位,墙被划分为若干个部分,每个部分的宽度为一个单位,每张海报完全的覆盖一段连续的墙体,墙体 ...
- iOS各种系统通知Name
当了一次搬运工,原地址:http://blog.csdn.net/db905517804/article/details/50569949 用法: - (void) viewWillAppear:(B ...
- CF_Lucky Sum
幸运数字的定义是这样:仅含4和7且不比n小的数为n的幸运数字. 输入范围l,r要求输出这个范围内的数字的幸运数字之和. 代码: #include<stdio.h> #define N 10 ...
- usb.ids
# # List of USB ID's # # Maintained by Vojtech Pavlik <vojtech@suse.cz> # If you have any new ...
- java常量使用比较好的方法
1.首先建立一个工具类 public class AppConst { private static Map<String,String> map=new HashMap<Strin ...
- Android 性能优化 四 布局优化merge标签的使用
小白:之前分享了ViewStub标签的使用,Android还有其他优化布局的方式吗? 小黑:<merge />标签用于减少View树的层次来优化Android的布局.先来用个例子演示一下: ...
- 【HDOJ】3033 I love sneakers!
分组背包. #include <stdio.h> #include <string.h> #define mymax(a, b) (a>b) ? a:b typedef ...
- 《大数据Spark企业级实战 》
基本信息 作者: Spark亚太研究院 王家林 丛书名:决胜大数据时代Spark全系列书籍 出版社:电子工业出版社 ISBN:9787121247446 上架时间:2015-1-6 出版日期:20 ...
- Android常用Manager整理
Android中常用Manager: ActivityManager,FragmentManager,PackagerManager, DownloadManager,ConnectivityMana ...
