У меня есть источник привязки данных, и у него есть связанное свойство. Когда это свойство исходного текста основано на тексте/целой и т. Д., Все работает отлично. Я могу связать это с текстовым полем или ярлыком.Windows Forms - привязка данных к свойствам свойств DataSource
Некоторые из моих свойств - это списки. Это тоже прекрасно, я могу создать новый listBindingSource, указать его источник данных в исходном источнике привязки, а datamember - как список и указать на мой, скажем, список. Я установил DisplayMember в свойство элемента в списке, и он отлично работает.
Однако, если свойство не является ни списком, ни текстом/int, а просто одним объектом ... Я застрял. Невозможно сказать, что я хочу привязать свойство свойства к объекту. Там нет «DisplayMember», чтобы помочь.
Пример:
У меня есть объект MeteredSpace. Он имеет свойство
public string Name {get;set;}
public List<MeteredSpace> ChildMeteredSpaces {get;set;}
public MeteredSpace ParentMeteredSpace {get;set;}
Тогда я определяю следующий встретился
//underlying datasource
this.meteredSpaceBindingSource.DataSource = typeof(SEMS.LinqObjects.MeteredSpace);
//data source of children
this.childMeteredSpacesBindingSource.DataMember = "ChildMeteredSpaces";
this.childMeteredSpacesBindingSource.DataSource = this.meteredSpaceBindingSource;
Теперь для моего управления:
//nice and easy, picking directly from the underlying data source
this.nameTextBox.DataBindings.Add(new System.Windows.Forms.Binding("Text",this.meteredSpaceBindingSource, "Name", true));
//our child metered space list box is pretty easy too:
this.meteredSpaceListBox.DataSource = this.childMeteredSpacesBindingSource;
this.meteredSpaceListBox.DisplayMember = "Name";
//then we come to our parent text box
this.nameTextBox.DataBindings.Add(new System.Windows.Forms.Binding("Text",this.meteredSpaceBindingSource, "ParentMeteredSpace", true));
У меня нет никакой возможности указывать его в собственности Имени ParentMeteredSpace как я с полем списка. Я также не могу создать хороший новый источник привязки для него.
Кто-нибудь знает об этом? Я посмотрел на переопределение элемента управления и добавление собственного DisplayMember, но я начал думать, что может быть лучший способ сделать это.
Благодаря
К сожалению, мой плохо задаваемый вопрос. Они являются свойствами (сгенерированный код от Linq до Sql). Я исправлю. – Joe
@Joe Обновлено сообщение. – LarsTech
Ничего себе. Это было очень легко, учитывая, как долго я пытался это сделать. Именно поэтому я и спросил. Большое спасибо! – Joe