对于(大致)任何类型的财产的“通用”控制?

时间:2012-08-02 21:59:42

标签: c# wpf windows reflection

所以我只是想知道,因为我的研究没有产生任何结果,是否有任何可自由使用的控制(最好是WPF),对于任何类型的属性来说,基本上都是“通用”控制?

例如,假设您正在提供WYSIWYG表单构造函数,并且您希望支持多种值类型 - 字符串,bools,整数,日期时间,浮点数等。当然,这些类型的列表也是......我想知道的是,是否已有一个控件,当绑定时,将检测属性的类型,然后为该类型呈现适当的控件类型。那就是:

对于int,一个带有向上/向下按钮的文本框,并验证它是一个整数 对于日期时间,日期时间选择器 对于日期时间列表,可能是一个将列表框与日期时间选择器组合在一起的自定义控件,可让您根据需要添加/删除日期时间...

编写一个相对简单,我想,但很难有效地处理所有不同的类型,当然它无法处理更复杂的类型......

任何人都知道什么?

3 个答案:

答案 0 :(得分:3)

这种类型的控制通常称为PropertyGrid

查看这些控件,看看它们是否符合您的需求:

  1. WPF Property Grid
  2. WPF PropertyGrid Control

答案 1 :(得分:0)

这对您来说并不是一个完美的解决方案,但Silverlight有一个DataForm,当绑定到自定义类型的对象时,它将生成一个具有适当属性控件的表单。它不包含在WPF中,但有一个WPF port of the Silverlight control

修改

我想念您的部分问题,这对您来说更难解决。它仍然可能有所帮助,所以我会把它放在这里。

答案 2 :(得分:0)

如果您使用自己的控件,则可以非常轻松地提供此功能,并包含用于执行特定任务(如数字编辑器和日期组合)的最佳控件。

我们最初搜索了一个包罗万象的控件,但是,像你一样,找不到一个。因此,我们支持超过15种不同的数据呈现类型。整个控件(包括注释)只有大约1500行,其中包含许多特定于我们应用程序的功能,但我们也能够混合使用各种第三方控件。

我们在不同的用例中使用的另一种方法是创建一个公共控制接口(即设置值,获取值,您是否有效等),然后创建实现此接口的单用途自定义控件。

然后,要对控件执行批量操作,只需循环访问容器控件列表,如果控件实现了我们的界面,则对该控件执行接口操作。

这显着减少了我们必须编写的代码量,以便在所有控件上执行其他标准操作。