问题标签 [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.
wpf - 带有 XamDataGrid 的 ICustomTypeDescriptor
我已扩展 XamDataGrid 以支持使用名为 ColumnSource 的 DependencyProperty 生成 DynamicColumn。因此,网格现在将根据名为“ColumnSource”的依赖属性动态生成列。这个想法的灵感来自我之前使用的 DevExpress WPF Grid。
话虽如此,我需要提一下,我在扩展控件中使用 Field(不是 UnBoundField)来生成列并将它们绑定到 ViewModel 对象。对于我到目前为止的要求,它工作得很好。
现在我有一个需要动态属性的 ViewModel 的情况。显然,我有 ICustomTypeDescriptor 的想法。我只是好奇是否可以在 XamDataGrid 中查看数据,但有以下限制:
- .Net 4.0
- ICustomTypeDescriptor
- 使用字段而不是 UnboundField 类来生成列。
- 显示的数据应该是两种可绑定的,即单元格数据的更改应该更改适当的 ViewModel 属性。
我在这里粘贴扩展控件的代码。它很长,所以我会尽量减少负责其他功能的代码。
这是 IGridColumn 合同:
我计划为 Grid 填充 ColumnSource 并将它们绑定到 ViewModel 的 ICustomTypeDescriptor 实例,其动态属性名称将与 IGridColumn 名称匹配。
wpf - ICustomTypeProvider 或 DynamicObject
我希望绑定到一个根据下面的代码动态公开其属性的类。似乎 ICustomTypeProvider 和 DynamicObject 都适用于此。任何人都可以解释为什么我可能想使用一个而不是另一个?
wpf - 将 ICustomTypeDescriptor 与 ItemsControl 一起使用
我正在实现 ICustomTypeDescriptor,以便可以在运行时创建具有动态属性的类型,但是,我不想将 ICustomTypeDescriptor 与大多数人似乎使用的 DataGrid 一起使用,而是希望将它与 ItemsControl 一起使用。
以下是应用程序的内容。(对不起,代码很多)
XAML:
问题是,通过上述实现,当我更改属性值时 ItemsControl 不会更新(请参阅 OnMouseDoubleClick),这是可以预料的,因为我在真正应该绑定时绑定到初始“CustomType.Properties”按名称分配给每个属性。我不能做后者,因为直到运行时我才知道属性名称。
因此,我假设我需要在后面的代码中动态地进行绑定,但我不太清楚如何。
c# - WPF DataGrid 不会为 ICustomTypeDescriptor 属性生成列(但 Winforms DataGridView 会)
如标题所示,我有一个 DataGrid 和一个实现 ICustomTypeDescriptor 的 ViewModel,在运行时添加了一些属性。
XAML 中的 DataGrid 定义:
我这样设置 ItemsSource:
其中controller.PartCloneSettingsControllers
定义为:
出于调试目的,我在 Winforms 控件主机中创建了一个 DataGridView 并将相同的 ViewModel 附加到它,瞧:Winforms 网格创建所有列并按我想要的方式显示数据,但是 WPF DataGrid 无法为我的自定义属性生成列(它适用于普通的普通属性)。
是否有人有使用 DataGrid、ICustomTypeDescriptor 和 AutoGenerateColumns=True 的工作解决方案(如果我在 XAML 中手动生成列,它工作正常,我可以绑定到我的所有属性......)
c# - .net 中的自定义属性描述符
我正在使用扩展 wpf 工具包中的PropertyGrid。
需要实现属性网格的本地化。为了实现这一点,一个基类实现ICustomTypeDescriptor
,另一个类实现PropertyDescriptor
。
我能够本地化属性网格。但是有一个相关的问题。
1)如果基类实现了ICustomTypeDescriptor
,并且假设派生类具有与基类相同的属性名称(被覆盖的属性),则抛出异常。
基类:
派生类:
c# - 将包含属性的上下文传递给 TypeConverter
我正在寻找一种将附加信息传递给 a 的方法TypeConverter
,以便在不创建自定义构造函数的情况下为转换提供一些上下文。
传递的额外信息将是包含我正在转换的属性的原始对象(在编译时称为接口)。它包含自己的属性,这些属性Id
对于查找转换相关信息很有用。
我已经查看了ITypeDescriptorContext的文档,但我还没有找到一个明确的示例来说明如何实现该接口。我也不相信这是我需要的工具。
目前,在我的代码中,我正在调用:
我想做的是类似的事情。
我希望能够使用其中一个重载来做我需要的事情,以便任何自定义转换器都可以继承TypeConverter
而不是具有自定义构造函数的基类,因为这将使依赖注入和使用DependencyResolver.Current.GetService(type)
MVC 来初始化的生活更轻松我的转换器。
有任何想法吗?
c# - ICustomTypeDescriptor GetConverter 实现
我有一个用 a 装饰的基类,TypeDescriptionProviderAttribute
它指向ICustomTypeDescriptor
.
有一个派生类装饰有一个TypeConverterAttribute
做自定义类型转换。
BaseClassTypeDescriptor
通过ICustomTypeDescriptor.GetConverter
调用静态TypeDescriptor.GetConverter
方法来实现。该方法有两个参数:有问题的类型(我有一个引用)和一个指示是否允许调用自定义行为的标志。这必须设置为true
防止无限循环。
代码的精简版本如下所示:
问题是这个标志似乎不仅绕过BaseClassTypeDescriptor
,而且似乎阻止 .NET 识别TypeConverterAttribute
派生类上的 。
TypeConverterAttribute
我已经通过重新实现对我的实现内部的检查来解决这个问题MyCustomTypeConverter.GetConverter
,如下所示:
这远非理想的解决方案。关于如何将责任委托给它所属的地方有什么建议吗?
propertygrid - WPFExtendedToolkit PropertyGrid 标准值
我正在尝试XmlElement
在 Xceed PropertyGrid 中显示 的属性。为此,我定义了自定义包装类。它包装 XmlElement,遍历 XmlAttributes 并为每个 XmlAttribute 创建自定义 PropertyDescriptor。所有“虚拟”属性的类型都是String
. 一切正常。现在,我想为每个具有受限值集的属性提供可能的属性值的下拉列表。在 Xceed 的 PropertyGrid 中,就是ItemsSourceAttribute
这样。但它必须按如下方式应用:
这就是问题所在 - 我无法为MyCustomItemsSource
构造函数提供正确的参数。我能做些什么呢?
似乎还有另一种可能性 - 定义 TypeConverter,覆盖 GetStandardValues,并将此转换器提供给“虚拟”属性。但是 PropertyGrid 只是忽略了这个属性。
如何使用 Xceed PropertyGrid 完成这个简单的任务?
c# - 在 PropertyDescriptor 中的 ResetValue 之后强制属性网格更新
我正在使用 winforms 中的属性网格来显示我的自定义类型的属性 - 我使用自定义类型描述符(实现接口 ICustomTypeDescriptor)来执行此操作,以便显示我的对象的公共属性,每个属性都有自己的 PropertyDescriptor 实现。
该实现接近此处描述的代码:http: //www.codeproject.com/Articles/4448/Customized-display-of-collection-data-in-a-Propert
这有效,因为我可以看到所有属性,并且它们在属性网格中有自己的编辑器但是我有如何实现的问题
在基础 PropertyDescriptor 上。
目前我已经像这样实现它:
然而,尽管数据确实得到了更新,属性网格显示只显示旧值,除非我刷新它 - 我无法弄清楚属性网格将如何更新或知道值已更改,是否存在某种事件刷新可以从 PropertyDescriptor 实现触发的单元格?
c# - UITypeEditor 工作原理
我想彻底了解 UITypeEditor 如何使用 PropertyGrid 为其添加更多功能。我找到了一些工作示例,但这对试图理解它是如何工作的没有多大帮助。我想将 UITypeEditor 用于实现 ICustomTypeDescriptor 的定制第 3 方 PropertyGrid,但它不起作用。
欢迎任何提示或解释。
提前致谢。