Возможно ли иерархическое связывание данных со свойствами? - PullRequest
1 голос
/ 30 июня 2009

Можно ли привязать к свойству собственности? Вот что у меня есть:

    [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 Ответ

1 голос
/ 30 июня 2009

Какой тип привязки данных вы делаете?

С простой привязкой (например, TextBox.Text к одному объекту), да, вы можете использовать "Foo.Bar.SomeProp" в качестве члена. Для PropertyGrid вы можете пометить объекты [TypeConverter(typeof(ExpandableObjectConverter))], и это будет работать.

Самое сложное - привязка к списку (DataGridView и т. Д.); здесь нет: это не легко сгладить. Вы можете сделать это, если перейдете к отличным длинам (ITypedList и т. Д.), Но это действительно того не стоит - просто добавьте свойства shim в родительский:

public string ChildName {
   get {return child == null ? "" : child.Name;} // and setter if you want
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...