使用属性驱动对话框创建的替代方法
本文关键字:方法 创建 对话框 属性 | 更新日期: 2023-09-27 18:33:15
我有一个类,它可以生成一个对话框,其中包含通过类属性上的属性定义的控件。例:
public class MyClass
{
[DialogControl("Total Amount")]
public Int32 Total { get; set; }
}
使用反射,我为 Total
属性生成一个带有 NumericUpDown 的对话框。关闭对话框后,对话框中的值将设置到属性中。这很好用。
但是,该属性使我的类有点混乱。我想探索其他设计或可能性以获得类似的功能,而无需向类中的属性添加属性。
您将如何设计和实现这样的系统?
编辑:假设类似于MyClass
类已经设计并且面向客户端。执行类到对话框转换的代码是内部代码。
我将使用流畅的界面。这是一段工作代码,我将其作为项目的概念证明。我也不喜欢属性,所以使用这种方法,您不必注释您的类别
var builder = new DialogBuilder<Foo>();
var dlg = builder
.CreateTab("Foo")
.CreateGroup("Bar")
.CreateCtrl("ctrl_Id", "Id"/*[Label]*/, Align.Left)
.BindTo(x => x.Id)
.Build();
此代码创建一个带有选项卡和组的窗体,然后添加一个控件,该控件绑定到 Foo 类中的属性 Id。 (您还可以指定验证,在某些条件下显示,在其他条件下隐藏等等)如您所见,这种方法是非侵入性的,您无需触摸模型扣即可使对话框正常工作。如果你愿意,你可以从这里下载整个项目
http://www.amiralles.com.ar/descargas/fluentdialog.zip
PS:没有文档,只有单元测试。