所以我要做的是设置一个带有某些控件的UI,我希望有一些类实例来填充值。
例如:
可以填充UI的类:
Sharpen, Blur, Smear, ... : FilterBase
因此,每当用户创建上述类的实例时,我都希望通过使用类实例自动获取基于UI控件的值。
用户界面包含以下内容:
.Name (TextBox)
.Amount (NumericUpDown)
.Decay (NumericUpDown)
因此,如果当前实例为s = new Sharpen()
,我想让s.Name填写UI.Name。
如何以最佳方式执行此操作?优雅,清晰,表现明智等。
我将使用反射,但如何存储对象的实例(锐化,...)并且类型安全?我应该使用System.Object
吗?还是T?
public partial class ParamsUI
{
T CurrentFilter (?)
...
}
另外,如果我使用T,我怎么知道要把它扔到哪里?
有更好的方法吗?
答案 0 :(得分:3)
由于这是使用Windows窗体,因此最灵活的选择可能是直接使用Windows窗体PropertyGrid。
您可以做很多工作来自定义外观。有关详细信息,请参阅获取Most Out of the .NET Framework PropertyGrid Control。
编辑:
如果您想拥有一个非常灵活,简单的选项,并且WPF是一个选项(托管在ElementHost中),您可以考虑使用WPF。
有了这个,你可以托管一个只包含资源字典和ContentControl的UserControl。
然后,您可以为要编辑的每个项目创建自定义XAML文件,并在资源中设置数据模板,指定要为其编辑的每个元素使用哪个用户控件(xaml)的映射。然后,您可以在代码中将元素设置为用户控件的“DataContext”,它将自动连接所有内容并“正常工作”。