问题标签 [propertygrid]
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# - 我可以让默认集合编辑器和/或自定义 UIEditor 调用属性的 set 访问器吗?
我正在为一个应用程序编写一个插件,其中我有一个自定义类,该类赋予程序的本机对象。API 允许我直接从本机文件中的对象读取和写入键控字符串。因此,我不是在每个属性的 Get 和 Set 访问器中读取和写入私有字段,而是在程序中的本机对象中读取和写入这些用户字符串。
用户通过 PropertyGrid 控件访问这些属性。到目前为止,除了现在我需要存储自定义对象类型(Floor )的自定义集合( FloorCollection )之外,这一切都可以使用简单的属性正常工作。
所以我使用XmlSerializer设置了一个属性。GET 访问器从本机对象中读取用户字符串,然后将该字符串反序列化为 FloorCollection 的实例。SET 访问器通过读取FloorCollection的实例并将其序列化为用户字符串来执行相反的操作。
这是我的财产的样子:
我可以在默认集合编辑器中通过我的PropertGrid打开这个集合属性。但是,默认集合编辑器仅在 GET 访问器提供的引用处编辑集合,而不是调用 SET 访问器将其保存回对象。所以我可以在默认编辑器中编辑集合,但是当我关闭并重新打开编辑器时,集合不会改变,因为永远不会调用 SET 访问器来将集合序列化回本机对象中的用户字符串。
我可以修改默认集合编辑器以调用属性的 set 访问器吗?如果我为该属性设置了一个自定义UITypeEditor,是否可以使用属性集访问器将其保存回该属性?或者是否有其他方法可以强制访问集合属性的代码通过值而不是引用来获取和设置属性?
wpf - PropertyGrid 控件中的 WPF“魔术”
我开始了一个爱好项目来了解 WPF,在我的研究中我偶然发现了这个 WPF PropertyGrid http://www.codeplex.com/wpg
我从http://wpg.codeplex.com/SourceControl/ListDownloadableCommits.aspx下载了源代码 ,然后开始浏览它,看起来很酷,而且可以工作。但是对于我的生活,我无法弄清楚它是如何工作的。乍一看,以下问题是我留下的。
- 它如何知道对象具有哪些属性?
- 它如何呈现控件以编辑值?
- 它如何决定渲染什么控件?(我猜测属性上的元数据描述)
我了解 DependancyProperties 处理新值之间的数据交换。
- 发挥所有魔力的 XAML 或 CodeBehind 代码在哪里?
Default.xaml 文件中有很多 XAML 代码,但据我所知,它只是在那里定义的样式和外观。
propertygrid - 如何将 PropertyDescriptors 添加到类而不是覆盖它们?
如果我有一个实现ICustomTypeDescriptor的类,我可以重写GetProperties()方法,用我的自定义PropertyDescriptors完全替换该类的所有属性。
但是,如果我想保留类的现有属性并将其他属性附加到类怎么办?有没有办法返回一组添加到现有类属性的自定义属性描述符?
例如,我希望用户能够在我的程序中定义将显示在属性网格中的自定义属性。自定义属性的值将存储在Dictionary(string key, object value)集合中,我想附加PropertyDescriptors,它们也将根据键值从该集合中读取和写入值。
我不认为IExtenderProvider会起作用,因为它只会将一个类的属性添加到另一个类。但我需要能够在运行时动态添加和删除属性。我可以拥有一个也实现ICustomTypeDescriptor的IExtenderProvider类,以便可以在运行时计算出它添加的属性吗?
c# - .NET 属性网格 - 使用 App.config 设置 Browsable (bool)
我希望能够使用 App.config 在我的属性网格上设置属性的可见性。我努力了 :
[Browsable(bool.Parse(Sytem.Configuration.ConfigurationSettings.AppSettings["testBool"]))]
但是 Visual Studio 2008 会给我一个错误“属性参数必须是属性参数类型的常量表达式、类型表达式或数组创建表达式”。有没有办法在 App.config 上设置这个布尔值?
.net - 使用 TypeDescriptor 为 PropertyGrid 动态添加属性级属性
我想在网格中显示时动态添加属性(如 Browsable(false))。场景是我有一个带有一些公共属性的自定义类。但是,我不希望所有公共属性都显示在 UI 中。有出路吗?
我尝试使用 TypeDescriptor。但是,它仅适用于类型级别,而不适用于属性级别。我找不到任何关于如何在属性级别使用它的帮助。
任何指针将不胜感激。
winforms - WinForms 属性网格中的数组属性显示格式
我有一个带有 string[] 属性的对象。当我将其分配为 PropertyGrid 中的 SelectedObject 时,我得到一个为该属性显示的“字符串 [] 数组”。
有没有办法可以将此显示部分更改为其他内容?
jquery - jQuery 中的属性网格
我想创建一个这样的属性网格:Ext JS Property Grid demo
但是我不想使用 extjs,而是使用 jQuery。什么插件最容易让我创建一个属性网格?
jqGrid 是我现在知道的唯一一个。 http://www.trirand.com/blog/
我对从 XML 文件或数据库加载数据不感兴趣,我应该能够从页面上的对象中设置数据。
编辑:我刚刚意识到还有另一个同名插件:http: //jqframework.com/jqgrid/
哦命名空间失败。
c# - PropertyGrid 中的自定义属性名称?
我有一个在PropertyGrid
. 我发现通过设置CategoryAttribute
每个属性,它显然会为每个项目创建一个新类别。这将我的属性网格设置为每个项目都有一个 [+],其中包含我的自定义名称,这不是我想要实现的行为。
在 Visual Studio 中,如果您单击解决方案资源管理器中的一个项目,例如一个程序集,它有零个树节点和一个完全命名的属性列表,即任何字符串都可以标识一个属性,而不仅仅是对象的名称。所以不要这样:
[+ 文件路径] 文件路径
| 属性值
[+ 文件大小]
文件大小 | 0 KB
我正在寻找这个:
[+ 文件]
文件路径 | 值
文件大小 | 0 KB
甚至上面没有初始 [+] 节点。我已经通过 System.ComponentModel 命名空间寻找适用的属性,但我找不到。
我怎样才能达到这个效果?这一定是可能的,Visual Studio 做到了,我相信它们是同一个组件,而不是派生和扩展的。
c# - PropertyGrid - 动态改变 ReadOnlyAttribute
叹息,另一个 PropertyGrid 问题。我以为我可以解决这个问题,直到遇到一个我实际上无法避免的问题。
我有一个布尔属性,有时需要只读,有时需要根据从 TreeView 中选择的对象进行更改。
我的问题是如何动态更改属性的 ReadOnlyAttribute?显然,创建一个布尔变量然后尝试像 ReadOnlyAttribute(boolVar) 一样设置它是行不通的,现在我没有想法了。
我能想到的唯一解决方案是为该属性可写和只读的项目创建单独的、几乎相同的类,但这对我来说似乎有点不雅。
帮助?:)
c# - 将 Object-Instance-Model 实现到 PropertyGrid
我正在构建一个 GUI 应用程序,它将作为 XML 配置文件的前端。
XML 结构定义了一组对象实例。也就是说,应该在消费应用程序(Windows 服务)中实例化的类型名称和属性值。
所以分为三层:
序列化为 Windows 服务的ConfigurationObject
正确 XML 格式。它们与 Windows 服务使用的ComponentObjects
类型相同。
我遇到的问题是确定保持所有三层同步的最佳方法。
我的第一个实现是在更改单个属性时更新它们。但是,当我需要将复杂对象更新到 UI 时,这种方法效果不佳(尽管我相信我知道现在的问题是什么)
我目前的方法涉及使用 TypeConverters 在ConfigurationObject
and之间进行转换,ComponentObjects
直到意识到我当前的逻辑忽略了(因为我只是在转换BrowseableAttribute
为时迭代所有属性)ComponentObject
ConfigurationObject
因此,在我花更多时间在我目前的方法上之前,我想确保我走在正确的轨道上。有没有更简单的方法?在这种情况下我可以使用一些模型/设计模式吗?
谢谢,卡尔