是否可以使用属性绑定分层数据?

时间:2009-06-30 11:57:36

标签: c# winforms data-binding properties

是否可以绑定属性的属性? 这就是我所拥有的:

    [Bindable(true)]
    public class DataClass
    {
        private string DescriptionValue = null;
        private Content DataContent Value = new Content();
        ....

        [Bindable(true)]
        public Content DataContent
        {
            get { return DataContent; }
            set { DataContent = value; }
        }

        [Bindable(true)]
        public string Description
        {
            get { return DescriptionValue; }
            set { DescriptionValue = value; }
        }
        ...
    }


    [Bindable(true)]
    public class Content
    {
        private object ContentValue = null;
        private Color StateBackColorValue;
        ...

        [Bindable(true)]
        public object Content
        {
            get { return ContentValue; }
            set { ContentValue = value; }
        }

        [Bindable(true)]
        public Color StateBackColor
        {
            get { return StateBackColorValue; }
            set { StateBackColorValue = value; }
        }
        ...
    }

是否可以将控件绑定到DataContent.Content或Content类的任何其他属性?我知道我可以在DataContent类中引入映射Content类属性的属性。我只是想知道是否可以使用属性进行分层数据绑定。

1 个答案:

答案 0 :(得分:1)

你在做什么类型的数据绑定?

使用简单绑定(例如TextBox.Text到单个对象),是的,您可以使用“Foo.Bar.SomeProp”作为成员。对于PropertyGrid,您可以使用[TypeConverter(typeof(ExpandableObjectConverter))]标记对象,它将起作用。

棘手的是列表绑定(DataGridView等);在这里,不:它不容易变平。如果你去伟大的长度(ITypedList等),你可以做到这一点,但它确实不值得 - 只需向父级添加填充属性:

public string ChildName {
   get {return child == null ? "" : child.Name;} // and setter if you want
}