在做组件之前,为了适应框架,我们需要有一个基类,并将这个基类打包成一个模板,让大部分组件去使用这个模板。
组件的基类就不多讲了,上篇文章中已经说过了。这是地址:
http://www.cnblogs.com/BeiJing-Net-DaiDai/articles/3248034.html
首先 将基类打包成一个模板 放在
C:UsersAdministratorDocumentsVisual Studio 2010TemplatesProjectTemplatesVisual 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组件(因为我没有自己写)想自己写可以按照这种方式去写。
WPF、AE技术交流群:94234450