您可以在Xceed PropertyGrid的PropertyDefinition中指定子属性吗?

时间:2019-08-13 03:21:58

标签: c# wpftoolkit propertygrid xceed propertypath

请考虑以下课程:

public class Order {
    public Person Customer  { get; set; }
    public string ProductId { get; set; }
}

public class Person {
    public string FirstName { get; set; }
    public string LastName  { get; set; }
}

现在说您希望'Order'类在属性网格中公开。您可以将Customer装饰为可扩展。看起来像这样...

Customer (<-- This is expandable/collapsible)
    FirstName
    LastName
ProductID

但是...如果您只想显示FirstName而不是整个Customer属性,而又希望它显示在与ProductID相同的级别上,那么该怎么办...

FirstName
ProductID

我在PropertyDefinitions中尝试过的事情:

  1. Name设置为“ Customer.FirstName”
  2. Name设置为“客户/名字”
  3. 使用TargetProperties(而不是Name),先添加“客户”,再添加“名字”

我唯一能想到的就是做到这一点...

public class OrderWrapper {

    public OrderWrapper(Order order)
        => Order = order;

    private Order order;

    public string FirstName {
        get => order.Customer.FirstName;
        set => order.Customer.FirstName = Value;
    }

    public string ProductId {
        get => order.ProductId;
        set => order.ProductId = Value;
    }
}

然后将其用作属性网格中的选定对象。这似乎太过分了。有没有更简单的方法?

0 个答案:

没有答案