当前位置: 首页 > news >正文

淘宝做网站的都是模板网站虚拟主持

淘宝做网站的都是模板,网站虚拟主持,推广平台网站热狗网,营销型网站建设的五力原则包括第一步#xff1a;自定义控件的TypeDescription描述。 为了扩展.NET的类型描述系统(Type Descriptor System)#xff0c;在运行时动态地更改对象的属性#xff0c;使得这些属性在PropertyGrid上下文中不会被显示。 1.CLTypeDescriptionProvider#xff1a;这是一个TypeDesc… 第一步自定义控件的TypeDescription描述。 为了扩展.NET的类型描述系统(Type Descriptor System)在运行时动态地更改对象的属性使得这些属性在PropertyGrid上下文中不会被显示。 1.CLTypeDescriptionProvider这是一个TypeDescriptionProvider的实现。TypeDescriptionProvider是.NET的一部分用于提供有关类型的信息。在这个实现中它将返回一个自定义的ICustomTypeDescriptor实现即CLTypeDescriptor。 2.CLTypeDescriptor这是一个ICustomTypeDescriptor的实现。ICustomTypeDescriptor为对象提供了一种方式来提供有关其属性的自定义信息。在这个实现中它将返回一个包含自定义PropertyDescriptor的PropertyDescriptorCollection。 3.CLPropertyDescriptor这是一个PropertyDescriptor的实现。PropertyDescriptor描述了一个对象的属性包括其名称、类型、默认值等。在这个实现中它将返回一个修改过的AttributeCollection该AttributeCollection包含一个新的BrowsableAttribute其值为false。这意味着这个属性在PropertyGrid上下文中不会被显示。 这是代码 public class CLTypeDescriptionProvider : TypeDescriptionProvider {public CLTypeDescriptionProvider(): base(TypeDescriptor.GetProvider(typeof(object))) { }public override ICustomTypeDescriptor GetTypeDescriptor(Type type, object o){ICustomTypeDescriptor baseDescriptor base.GetTypeDescriptor(type, o);return new CLTypeDescriptor(baseDescriptor);} }public class CLTypeDescriptor : CustomTypeDescriptor {ICustomTypeDescriptor original;public CLTypeDescriptor(ICustomTypeDescriptor originalDescriptor): base(originalDescriptor) { original originalDescriptor; }public override PropertyDescriptorCollection GetProperties(){ return this.GetProperties(new Attribute[] { }); }public override PropertyDescriptorCollection GetProperties(Attribute[] attributes){var properties base.GetProperties(attributes).CastPropertyDescriptor().Select(p new CLPropertyDescriptor(p)).ToArray();return new PropertyDescriptorCollection(properties, true);} }public class CLPropertyDescriptor : PropertyDescriptor {PropertyDescriptor o;public CLPropertyDescriptor(PropertyDescriptor originalProperty): base(originalProperty) { o originalProperty; }public override bool CanResetValue(object component){ return o.CanResetValue(component); }public override object GetValue(object component) { return o.GetValue(component); }public override void ResetValue(object component) { o.ResetValue(component); }public override void SetValue(object component, object value){ o.SetValue(component, value); }public override bool ShouldSerializeValue(object component){ return o.ShouldSerializeValue(component); }public override AttributeCollection Attributes{get{var attributes base.Attributes.CastAttribute().ToList();var category attributes.OfTypeCategoryAttribute().FirstOrDefault();//if (category ! null category.Category Extra) attributes.Add(new BrowsableAttribute(true));attributes.Add(new BrowsableAttribute(false));return new AttributeCollection(attributes.ToArray());}}public override Type ComponentType { get { return o.ComponentType; } }public override bool IsReadOnly { get { return o.IsReadOnly; } }public override Type PropertyType { get { return o.PropertyType; } } } 第二步自定义控件注入类特性CLTypeDescriptionProvider字段特性Category、Browsable、DisplayName、Editor。 1.CategoryAttribute这个特性用于将属性分组到特定的类别中。在PropertyGrid控件中类似的属性可以被组织在一起。例如你可以使用[Category(Appearance)]来指示属性应该在Appearance类别下显示。 2.BrowsableAttribute这个特性用于控制属性是否应PropertyGrid控件中显示。如果你设置[Browsable(false)]该属性将不会在属性浏览器中显示。 3.DisplayNameAttribute这个特性用于控制属性在PropertyGrid控件中的显示名称。默认情况下属性的名称就是它在代码中的名称。但是你可以使用[DisplayName(My Property)]来改变它在属性浏览器中的显示名称。 4.EditorAttribute这个特性用于指定用于编辑属性的编辑器。这个编辑器可以是一个字符串编辑器也可以是一个复杂的用户界面。例如你可以使用[Editor(typeof(MyCustomEditor), typeof(UITypeEditor))]来指定一个自定义的编辑器。在这个例子中MyCustomEditor需要继承自UITypeEditor类它提供了创建和管理属性编辑器的方法。 这是代码 [TypeDescriptionProvider(typeof(CLTypeDescriptionProvider))]public class ClLabel : UserControl, IExecutable, ICommunicationBindable{ [Browsable(true)] [Category(自定义项目)] [DisplayName(VM项目)] [Editor(typeof(WpfApp2.OpenCollectionEditor), typeof(OpenCollectionView))] public CustomType VMItem {get { return (CustomType)GetValue(VMItemProperty); }set { SetValue(VMItemProperty, value); } } 第三步实现自定义编辑器该类继承自PropertyEditorBase。OpenCollectionEditor是一个自定义编辑器用于编辑属性。 OpenCollectionEditor类覆盖了PropertyEditorBase的两个方法CreateElement和GetDependencyProperty。 1.CreateElement方法接受一个PropertyItem参数该参数表示要编辑的属性。在此方法中你首先获取属性的值假设它是一个ClLabel类型的对象然后创建一个OpenCollectionView对象并将ClLabel对象的VMItem属性设置为OpenCollectionView的customType。然后你将VMItem对象序列化为JSON字符串并设置为OpenCollectionView的txt文本。最后你返回OpenCollectionView对象这个对象将用于编辑属性。 2.GetDependencyProperty方法返回一个DependencyProperty对象该对象表示OpenCollectionView的CustomTypeProperty。DependencyProperty是WPF中的一个重要概念它支持属性值的继承数据绑定等功能。 这是代码 public class OpenCollectionEditor : PropertyEditorBase{public override FrameworkElement CreateElement(PropertyItem propertyItem) {var model propertyItem.Value as ClLabel;OpenCollectionView openCollectionView new OpenCollectionView();openCollectionView.customType model.VMItem;openCollectionView.txt.TextJsonConvert.SerializeObject(model.VMItem);return openCollectionView;} public override DependencyProperty GetDependencyProperty() OpenCollectionView.CustomTypeProperty;} 第三步实现显示的自定义属性。 public partial class OpenCollectionView : UserControl{public OpenCollectionView(){InitializeComponent();DataContextChanged OpenCollectionView_DataContextChanged;}private void OpenCollectionView_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e){RelayCommandCustomType cmd new RelayCommandCustomType(param {var editor new CustomControlWindow();editor.ShowDialog();return editor.selectedItem;});cmd.Executed result {txt.Text JsonConvert.SerializeObject(result);};btn.Command cmd;}public CustomType customType{get (CustomType)GetValue(CustomTypeProperty);set SetValue(CustomTypeProperty, value);}public static readonly DependencyProperty CustomTypeProperty DependencyProperty.Register(nameof(customType), typeof(CustomType), typeof(OpenCollectionView), new PropertyMetadata(default(CustomType)));public ICommand ServoOMCItemEditCommand { get; set; }}
http://www.hkea.cn/news/14455399/

相关文章:

  • 网站建设与维护属于什么岗位泉州建设网站公司吗
  • 网络工程师自学网站怎样在百度上做网站
  • 做网站策划wordpress 绑定手机版
  • 专业制作网站公司哪家好fantastico wordpress
  • 怎样用word做网站ps教程自学网新手教程详细步骤
  • 网站管理助手+建设中网站服务器租用时间
  • 那个网站可以做恒指 买涨买跌wordpress直播主题
  • 做网站多少分辨率好长沙手机网站建设哪些内容
  • 建设银行大学华东学院网站做网站店铺怎样打理
  • m2型虚拟主机带宽 网站ppt模板免费下载 素材熊猫办公
  • 网站WordPress站点快站建站教程
  • 网站哪家公司做的最好做网站的合作案例
  • 网站做描本好处windows优化大师下载安装
  • 手风琴网站模板建设银行哈尔滨分行网站
  • 什邡门户网站广州市网站搭建制作
  • 网站如何做电脑和手机软件商务网站建设教学视频教程
  • 购物网站网页设计图片优秀网络小说
  • 建设音乐网站功能定位深圳龙岗网站维护
  • 做教育集团的网站手机网站制作软件下载
  • 响应式网站模板是什么撤销网站备案
  • 微小店适合卖做分类网站吗深圳做网站企业
  • 街舞舞团公司做网站深圳华强北在哪
  • 建设牌安全带厂家网站塘沽网络公司
  • 网站开发的兼职网站网站建设要哪些人?
  • 如何屏蔽网站ip武威网页设计培训学校
  • php网站开发实训感想毕节做网站的公司
  • 外贸经常用的网站如何做高校的网站版面设计
  • 做网站没有必须要ftp吗公司企业邮箱申请流程
  • 用 htmi5做网站东莞网站平台后缀
  • 同仁微网站建设工作室wordpress开启redis