在做组件之前,为了适应框架,我们需要有一个基类,并将这个基类打包成一个模板,让大部分组件去使用这个模板。

组件的基类就不多讲了,上篇文章中已经说过了。这是地址:

http://www.cnblogs.com/BeiJing-Net-DaiDai/articles/3248034.html

首先 将基类打包成一个模板    放在

C:\Users\Administrator\Documents\Visual Studio 2010\Templates\ProjectTemplates\Visual C#    文件夹下这是win7下的     xp的在我的文档目录下找。

然后启动vs2010   文件->新建->项目

选择Visual C#  找到Component  

打开这个    就看到模板了。

ok!   开始编辑

哦,对了   记得改下名字

在创建解决方案的时候去改,不要创建好之后改,以免不必要的麻烦。

组件:

public class ComponentTextBox : Component
{
public ComponentTextBox()
{
Content = new ShapeComponentTextBox();
} public override string TextName
{
get { return "文本框"; }
}
}

组件的属性:

public class ComponentTextBoxProperty : ComponentProperty
{
private string _Content; [Category("内容设置")]
[Description("文字")]
public string Content
{
get { return _Content; }
set
{
if (_Content == value) return; _Content = value;
OnPropertyChanged("Content");
}
} }

组件的事件:

  

public class ComponentTextBoxEvent : ComponentEvent
{
private string _Click; [Category("基础事件")]
[Description("单击事件.")]
[EventInfo("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)
{
//事件处理
}
}
}

ShapeComponentTextBox:

public class ShapeComponentTextBox : HrvContent
{
public ComponentTextBoxProperty _Property;
public ComponentTextBoxEvent _Event; public ShapeComponentTextBox()
{ this.Content = new TextBox();
BindingOperations.SetBinding(this.Content as TextBox, TextBox.ContentProperty, new Binding("Content") { Source = this.Property, Mode = BindingMode.TwoWay });
} public override ComponentProperty Property
{
get
{
if (_Property == null)
{
_Property = new ComponentTextBoxProperty();
}
return _Property;
}
} public override ComponentEvent Event
{
get
{
if (_Event == null)
{
_Event = new ComponentTextBoxEvent();
}
return _Event;
}
}
}

如此,大功告成!

这样就创建了一个TextBox组件(因为我没有自己写)想自己写可以按照这种方式去写。

点击加入QQ群:

WPF、AE技术交流群:94234450  

最新文章

  1. WPF系列 Path表示语法详解(Path之Data属性语法)
  2. WinForm 容器控件
  3. Android 运行时权限处理
  4. Recyclerview使用系列教材
  5. BroadCast Receive 生命周期
  6. UVA-12436 Rip Van Winkle's Code (线段树区间更新)
  7. iOS 数据存储 - 归档和解归档
  8. 【转】使用断言NSAssert()调试程序错误
  9. 转:Android studio Gradle
  10. poj 1659 Frogs' Neighborhood Havel-Hakimi定理 可简单图定理
  11. Android支付接入(二):移动游戏基地
  12. Apache 80 端口被占用无法重启解决办法
  13. ♫【网站优化】Reflow / Repaint
  14. COJN 0575 800601滑雪
  15. [置顶] 【VB.NET2010】注册表写入方法
  16. ios 开发 常见问题解决 (持续更新)
  17. iOS APP之间到跳转,以及热门应用,手机自带到应用跳转
  18. Search 命令详解
  19. 【转载】2015 Objective-C 三大新特性 | 干货
  20. 用html给div加类似a标签的超链接(转)

热门文章

  1. Codeforces Round #198 (Div. 2) —— D
  2. ubuntu 64bit “arm-linux-gcc: No such file or directory”问题的解决方法
  3. 李洪强漫谈iOS开发[C语言-032]-三目运算符
  4. Linux 命令备注
  5. POJ_3579_Median_(二分,查找第k大的值)
  6. (转载)JavaScript中的Window窗口对象
  7. 初次运行 Git 前的配置
  8. Java for selenium(webdriver) 环境搭建
  9. django 项目部署在 Apache 后, 设置二级域名(Apache虚拟主机 、 万网二级域名设置)
  10. Fiddler基本用法以及如何对手机抓包