问题标签 [propertydescriptor]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net - 只读 PropertyGrid
我需要在 PropertyGrid 中显示一个具有以下要求的对象:该对象及其子对象必须是只读的,能够激活 PropertyGrid 的 CollectionEditors。
我找到了一个与我需要的非常匹配的样本,但是有一个我无法弄清楚的意外行为。对于不同的对象,我有多个 PropertyGrids。在 SetBrowsablePropertiesAsReadOnly 中,我循环了一个对象,但令人惊讶的是,我项目中的所有 PropertyGrids 都变成了只读的。谁能帮帮我。这是代码:
c# - 获取类型的默认 PropertyDescriptors
我正在PropertyGrid
通过实现来自定义对象类型在 a 中的显示方式ICustomTypeDescriptor
。我允许用户创建自己的自定义属性,这些属性存储在单个键和值字典中。我能够PropertyDescriptors
为这些值创建所有值并在属性网格中查看它们。但是,我还想显示所有默认属性,如果PropertyGrid
通过反射而不是我的覆盖ICustomTypeDescriptor.GetProperties
方法填充这些默认属性。
现在我知道如何获取对象的类型,然后GetProperties()
是 ,但这会返回一个PropertyInfo
not的数组ProperyDescriptor
。那么如何将PropertyInfo
类型的对象转换为PropertyDescriptor
对象以包含到我的自定义集合中PropertyDescriptors
?
c# - 从属性网格重置属性
我正在使用 PropertyGrid 来显示我的对象的属性。但是,我还允许用户创建自己的属性,并为这些自定义属性设置值。每个可以具有这些自定义属性的对象都有一个 Dictionary 集合,其中字符串是标识属性的唯一键,Object 是原始类型(字符串、布尔值、整数等)的值。
我用 get 和 set 方法创建了一个自定义 PropertyDescriptor,这些方法检查 Dictionary 是否有匹配的键,或者分别用匹配的键创建/覆盖值。
但是,我还想让用户能够清除该属性,从而将其条目从字典中完全删除。我将代码放在我的自定义 PropertyDescriptor 的 ResetValue 覆盖方法中,但是我看不到任何通过 PropertyGrid 接口调用它的方法?它似乎不是上下文菜单选项或类似的东西。
因此,如果我有一个带有自定义 ResetValue 方法的自定义 PropertyDescriptor,我如何真正从 PropertyGrid 调用该方法?
c# - ReadOnlyAttribute 与 PropertyDescriptor.IsReadOnly()
PropertyDescriptor
使用为方法返回值的 aIsReadOnly()
和与 a 关联的有什么区别ReadOnlyAttribute
?
c# - TypeDescriptor.GetProperties(thisType) 返回属性,这是只写的
我试图从一个类型中获取所有属性,但是使用 TypeDescriptor.GetProperties(thisType) 只会为我提供属性,它同时具有 setter 和 getter。我有只写属性。有没有办法检索包括这些在内的 PropertyDescriptorCollection?
/阿斯格
c# - 自定义属性描述符和扁平化层次结构
我有一个自定义属性描述符,用于支持扁平化对象层次结构。
为了实现这一点,我进行了子类PropertyDescriptor
化并将链接列表存储到我想要检索其值的“下一个”(子)属性。
这使我能够以“平面”方式将子属性绑定到网格(导出到 excel,等等)。
例如。网格(绑定属性,标题)
问题是,一旦我添加了一个具有重复名称的列,无论它有一个唯一的标题,它都会检索第一个标题的属性,但仍将正确的标题放入:
有任何想法吗?
c# - 将类别属性添加到 PropertyDescriptor
我有一组自定义的 PropertyDescriptor,我也想添加类别,以便它们在 PropertyGrid 中以更有条理的方式显示。我希望每种类型的 PropertyDescriptor 进入一个特定的类别。
我尝试使用 TypeDescriptor.AddAttributes() 将属性添加到现有的 PropertyDescriptor,但未添加类别属性。
我还尝试在构造函数中为我的一个 PropertyDescriptor 使用 TypeDescriptor.AddAttributes(),如下所示。但它也不起作用。
我宁愿不花时间详细说明我为什么要做我正在做的事情。但在上面的示例中,IntrinsicPropertyDef 是一个定义属性的类,包括名称、显示名称和类型。所以 propDef.Attributes 包括 DisplayNameAttribute。
可以使用两个不同的自定义 PropertyDescriptor IntrinsicPropertyDescriptor 和 InferedIntrinsicPropertyDescriptor 来显示 IntrinsicPropertyDef。每个 IntrinsicPropertyDescriptor 都应该有一个类别属性“Intrinsic Properties”,每个 InferedIntrinsicPropertyDescriptor 都应该有一个类别属性“Inferred Intrinsic Properties”。
propertygrid - 如何将 PropertyDescriptors 添加到类而不是覆盖它们?
如果我有一个实现ICustomTypeDescriptor的类,我可以重写GetProperties()方法,用我的自定义PropertyDescriptors完全替换该类的所有属性。
但是,如果我想保留类的现有属性并将其他属性附加到类怎么办?有没有办法返回一组添加到现有类属性的自定义属性描述符?
例如,我希望用户能够在我的程序中定义将显示在属性网格中的自定义属性。自定义属性的值将存储在Dictionary(string key, object value)集合中,我想附加PropertyDescriptors,它们也将根据键值从该集合中读取和写入值。
我不认为IExtenderProvider会起作用,因为它只会将一个类的属性添加到另一个类。但我需要能够在运行时动态添加和删除属性。我可以拥有一个也实现ICustomTypeDescriptor的IExtenderProvider类,以便可以在运行时计算出它添加的属性吗?
c# - 如何将默认 PropertyDescriptor 设置为属性?
是否有用于为属性设置默认 PropertyDescriptor 的属性?我只想为属性添加一个属性并指定 PropertyDescriptor。然后将创建 PropertyDescriptor 的实例。我还没有在 .net 框架中找到该属性。