【问题标题】:Separating visual attributes from data classes?从数据类中分离视觉属性?
【发布时间】:2011-03-24 10:59:07
【问题描述】:

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

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

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

示例:

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

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

但是,我不喜欢在我原本不可知的数据类中将这些与 UI 紧密相关的属性混合在一起。

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

【问题讨论】:

    标签: .net winforms propertygrid


    【解决方案1】:

    我有两个建议:

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

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

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

    【讨论】:

      猜你喜欢
      • 2023-01-25
      • 2016-12-04
      • 1970-01-01
      • 2012-02-18
      • 2022-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-28
      相关资源
      最近更新 更多