将视觉属性与数据类分开?

时间:2010-08-02 22:01:48

标签: .net winforms propertygrid

我正试图找出正确的方法来做到这一点。

我有一个WinForms应用程序,它使用PropertyGrid作为控件之一;我正在使用.SelectedObject属性来指定适当的对象来显示。

的属性

PropertyGrid对此对象的类属性使用声明的属性来确定可视内容,例如:如果该项目可见(可浏览),如果该属性需要备用UI呈现(例如,下拉列表与文本框)。

示例:

    [TypeConverter(typeof(MyTypeConverter))]
    public string MyAttribute
    {
       ...
    }

    [Browsable(false)]
    public string HiddenAttribute
    {
       ...
    }

但是,我不喜欢这些属性的混合,这些属性与我的其他不可知数据类中的UI密切相关。

在不影响我的数据类的情况下,为PropertyGrid声明这些必要属性的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

我有两个选择建议:

  1. 使用部分类将属性放在单独的文件中

  2. 或为您的属性创建一个单独的类

  3. 我个人更喜欢选项#2,但要完全实现它,您需要一种机制来将属性对象与主对象相关联。执行此操作的最通用方法是定义将返回属性对象的接口,并在主对象中实现该接口。然后修改在PropertyGrid上设置.SelectedObject属性的代码,以检查该接口,并在实现时使用属性对象。