问题标签 [icustomtypedescriptor]
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.
c# - PropertyGrid - 从 IList 派生的属性, 如何添加到 PropertyGrid 以便用户可以添加/编辑/删除项目
让我提供一些关于我如何达到这一点的历史。
我最初在我的类中有一个从 CollectionsBase 派生的属性,并将这个集合映射到 PropertyGrid,用户可以随意从列表中添加/编辑/删除项目。
但是,我无法将 CollectionsBase 与 NHibernate 映射,因此我不得不放弃我的初始实现,而不是从 CollectionsBase 派生,我让类派生自 IList。
现在我可以映射到 NHibernate,但我无法通过 PropertyGrid 编辑集合。
我需要一些帮助才能让两人好好相处。
在我的主类中,我有一个属性定义为:
继承 IList 的我的 Zone Collection 定义如下:
}
现在,当此类从 CollectionsBase 派生时,我的 ICustomTypeDescriptor 和 PropertyDescriptor 工作正常,但现在它只在属性名称中显示类名称 ZoneCollection,而没有“...”按钮来添加/编辑/删除列表中的项目。
现在我做错了什么,因为它是从 IList 继承的,这不起作用?
如果我添加:
在 ZoneCollection 的开头,我将列表中的项目列在可展开的树中,但这不是我想要的。当我从 IList 而不是 CollectionBase 继承时,“...”按钮在哪里打开了一个弹出窗口,使我能够添加/编辑/删除集合中的项目?
dynamic - DataGridView ICustomTypeDescriptor
我想构建一个带有数据绑定的 DataGridView 到一个可以在运行时添加属性的类。我想在运行时添加列并将值存储在类中。我在这里找到了一个很好的例子(Dictionary to store Properties with ICustomTypeDescriptor)
它工作正常,直到我想从 DataGridView 读取信息。我得到 NullReferenzException 或 IndexOutOfBoundException。
我认为我的 BindingClass 中缺少 ICustomTypeDescriptor。.NET 设计器不在 Visual Studio 中创建列,而是在程序启动时创建列。
如果有人能帮我解决这个问题,我会很高兴的。
c# - 什么是 ICustomTypeDescriptor 以及何时使用它?
我不明白它是什么以及何时使用它。MSDN 没有帮助我。MSDN 声明 ICustomTypeDescriptor 提供了一个接口,该接口为对象提供动态自定义类型信息。
wpf - 为什么在实现 INotifyPropertyChanged 时 WPF 似乎绕过了 TypeDescriptionProviderAttribute?
我正在尝试使用[TypeDescriptionProviderAttribute]
,以便为我的类提供自定义类型描述符。这可行,但是当我实现INotifyPropertyChanged
WPF 时似乎忽略了自定义类型描述符并直接使用 CLR 属性(如果它存在)。这是一个片段,稍后我将粘贴完整的示例:
我将 TextBlock 绑定到 TheProperty。当我...
留下所有评论
我按预期看到“CLR - TheProperty”。
采用
[TypeDescriptionProvider]
我按预期看到“MyPropertyDescriptor - TheProperty”。
采用
ICustomTypeDescriptor
我按预期看到“MyPropertyDescriptor - TheProperty”。
使用
ICustomTypeDescriptor
和INotifyPropertyChanged
我按预期看到“MyPropertyDescriptor - TheProperty”。
使用
[TypeDescriptionProvider]
和INotifyPropertyChanged
我看到“CLR - TheProperty”。为什么是这样?奇怪的是,没有CLR 属性的自定义属性会正常显示。我的自定义类型描述符还返回一个“MyPropertyDescriptor - AnotherProperty”,它适用于所有情况,因为没有
AnotherProperty
定义 CLR。
总之,鉴于此 XAML
AnotherProperty
始终按预期工作,因为该模型没有名为“AnotherProperty”的 CLR 属性。TheProperty
按预期工作,除非同时使用和[TypeDescriptionProvider]
。INotifyPropertyChanged
这是完整的代码。它有点长,但大部分都无关紧要,它只是 System.ComponentModel 需要的
wpf - ICustomTypeDescriptor 和混合
我正在为一个新项目制作绑定原型,但遇到了 Blend 和绑定的障碍。我们正在尝试给我们一个实现了接口的BindableEntity
类。ICustomTypeDescriptor
这样做的原因是允许将实体框架和 UI 上的绑定分开。
我们遇到的问题是 Blend 使用反射而不是ICustomTypeDescriptor
我们的属性描述符的实现。例如,当我单击主窗口中某个文本块的绑定时,我需要显示FirstName
和LastName
属性,以便设计人员可以选择它们。我不希望他们使用自定义绑定。具有讽刺意味的是,Visual Studio 演示了所需的行为。
这是 源代码的链接
有没有人对如何做到这一点有任何想法?
.net - 对象上的 ICustomTypeDescriptor 包装器
我在我的应用程序中实现了 ICustomTypeDescriptor,以便能够在运行时定义自定义属性。我的基本实现如下所示:
问题是,现在当我使用 DynamicClass 绑定器将对象绑定到文本框时,它不再起作用。
我这样使用它:
我得到了例外:“对象与目标类型不匹配。”
对象与目标类型不匹配。
在 System.Reflection.RuntimeMethodInfo.CheckConsistency(Object target) 在 System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] 参数, CultureInfo 文化, Boolean skipVisibilityChecks) 在 System.Reflection.RuntimeMethodInfo.Invoke( Object obj、BindingFlags invokeAttr、Binder binder、Object[] 参数、CultureInfo 文化)
在 System.ComponentModel.ReflectEventDescriptor.AddEventHandler(Object 组件,委托值) 在 System.ComponentModel.ReflectPropertyDescriptor.AddValueChanged(Object 组件,EventHandler 处理程序) 在 System.Windows.Forms.BindToObject.CheckBinding() 在 System.Windows.Forms.Binding .SetListManager(BindingManagerBase bindingManagerBase) 在 System.Windows.Forms.ListManagerBindingsCollection.AddCore(Binding dataBinding) 在 System.Windows.Forms.BindingsCollection.Add(Binding binding) 在 System.Windows.Forms.BindingContext.UpdateBinding(BindingContext newBindingContext, Binding binding ) 在 System.Windows.Forms.Control.UpdateBindings()
如果我使用 ext 对象而不是 binder,则绑定有效。我错过了 ICustomTypeDescriptor 实现中的某些内容吗?
c# - 如何在 PropertyGrid C# 中自定义 PropertyInfo[] 对象
我有一个动态加载的类,我事先不知道它包含多少(或什么类型)属性。我想以显示常规类的方式将其所有属性加载到 PropertyGrid 中。
例如,如果这是我的课:
我使用反射来生成一个对象并获取它的属性:
如何在 PropertyGrid 中显示属性?
我已经多次准备好这篇文章
http://www.codeproject.com/Articles/4448/Customized-display-of-collection-data-in-a-Propert
但我似乎无法让它工作。
一些指导将不胜感激。
谢谢!
c# - 属性网格中的列表扩展器,带有通用 ICustomTypeDescriptor
我有一个Parameters.cs
实现接口的通用类()ICustomTypeDescriptor
:.
我将泛型类用于几个不同的类,其中之一是:
Class1.cs:
职位类别:
现在列表在 Propertygrid 中显示为三个点(“...”)。
我希望它与 Expander ("+") 一起显示,我们如何通过 ICustomTypeDescriptor
?
编辑:
我试着把列表放在[TypeConverter(typeof(ExpandableObjectConverter))]
上面Pos
,它没有帮助。
c# - 提交给属性代理
假设我有以下不允许更改的类:
现在我想通过将它们放入 PropertyGrid 来编辑这些数据。我创建了两个像这样的 Wrapper 类(http://msdn.microsoft.com/en-us/magazine/cc163816.aspx)
我可以在 PropertyGrid 中查看和编辑“m_newMember”,但我需要通过 FieldsToPropertiesProxyTypeDescriptor 包装对“m_baseData”的访问。我怎么能做到这一点。或者有没有更好的方法将字段包装到属性中?
c# - 为什么 TypeDescriptor.GetProperties 在使用 ICustomTypeDescriptor 时对类型和对象表现不同
我创建了一个实现 ICustomTypeDescriptor 的通用类 Group。它只是将泛型类型参数的属性添加到自己的属性中。
为什么以下代码的行为不同?
我认为这一定与属性是在对象的实例时间生成的事实有关。但是使用的类型不是已经定义了属性的数量吗?
是否可以在不实例化类型的情况下解决此问题?