【问题标题】:Custom property descriptor and flattening hierarchies自定义属性描述符和扁平化层次结构
【发布时间】:2009-04-24 06:29:55
【问题描述】:

我有一个自定义属性描述符,用于支持扁平化对象层次结构。

为了实现这一点,我对PropertyDescriptor 进行了子类化,并将一个链表存储到我要为其检索值的“下一个”(子)属性。

这使我能够以“平面”方式将子属性绑定到网格(导出到 excel 等)。

例如。 网格(绑定属性,标题)

Col1:Customer.Name(Customer)
Col2:Customer.Address(Address)
Col3:Customer.OutstandingOrders.Count(Outstanding Orders)

问题是,一旦我添加了具有重复名称的列,无论它有一个唯一的标题,它都会检索第一个属性,但仍将正确的标题放入:

Col4:Customer.Company.Name(Company)

有什么想法吗?

【问题讨论】:

    标签: c# binding propertydescriptor


    【解决方案1】:

    问题是,一旦我添加了一个具有重复名称的列,无论它有一个唯一的标题,它都会检索第一个的属性,但仍然会放入正确的标题。

    你能澄清那条线吗?我以前做过,但我使用了假想名称中的导航路径 - 即我可能有PropertyDescriptor.Name 报告Customer_Company_Name 而不是Name,并使用.DisplayName 报告更具可读性的内容。

    【讨论】:

    • 啊,我明白了,我会试试这个,我目前返回最后一个孩子的名字(即 this.child==null ? this.name : this.child.name; 我会试试看建立一个像这样的唯一名称,因为我认为它正在缓存第一个属性的值并在第二个属性上使用正确的标题重用它。我会投票给你,但我不能:(我会让你知道。
    • 这是名称覆盖中的新工作行。返回 base.Name + (childProperty == null ? "" : "_" + childProperty.Name);如果 childProperty == null 或 childProperty.Name elsewise,我之前返回 base.Name。
    猜你喜欢
    • 1970-01-01
    • 2020-03-14
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 2021-01-01
    • 2016-06-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多