Win Forms: Как связать свойство UserControl в DataRepeater с самим элементом коллекции
Я использую повторитель данных из пакетов питания Visual Basic (Microsoft.VisualBasic.PowerPacks.DataRepeater
) в.Net 4.0 (C#) проект winforms. Я связываю это (устанавливая DataSource
свойство) к универсальному List<T>
, Т - только один из моих бизнес-классов.
Элемент управления, который я поместил в повторитель данных, является UserControl. UserControl имеет открытое свойство типа T, которое называется MyItem
,
Я хочу связать MyItem
Свойство UserControl для фактического элемента типа T в коллекции, но оно не работает. Я могу привязать к одному из свойств типа T, но не к самому элементу коллекции. Обратите внимание, я не пытаюсь привязать его ко всей коллекции, а скорее к элементу коллекции, который идет с этой строкой в повторителе данных (текущий элемент).
Что я могу ввести в dataMember
параметр DataBindings.Add
способ сделать эту работу? я пытался "."
, "/"
а также ""
безрезультатно.
Вот мой объект коллекции:
public class MyClass
{
public string SomeProperty {get; set;}
public MyClass Self
{
get
{
return this;
}
set
{
}
}
}
Вот мой пользовательский контроль:
public partial class MyUserControl : UserControl
{
public MyUserControl()
{
InitializeComponent();
}
private MyClass _myItem;
public MyClass MyItem
{
get
{
// this never gets called
return _myItem;
}
set {
// this never gets called
_myItem = value;
// Do something with _myItem
}
}
private string _APropertyToBindToOneOfMyItemsProperties;
public string APropertyToBindToOneOfMyItemsProperties
{
get
{
// this gets called
return _APropertyToBindToOneOfMyItemsProperties;
}
set
{
// this gets called
_APropertyToBindToOneOfMyItemsProperties = value;
}
}
}
А вот мой код в элементе управления, который содержит повторитель данных, который отвечает за загрузку повторителя данных с данными:
var MyCollection = new List<MyClass>();
MyCollection.Add(new MyClass() {SomeProperty = "Value1"});
MyCollection.Add(new MyClass() {SomeProperty = "Value2"});
this.MyUserControl1.DataBindings.Add("APropertyToBindToOneOfMyItemsProperties", MyCollection, "SomeProperty"); // this works!
this.MyUserControl1.DataBindings.Add("MyItem", MyCollection, "/"); // can't get this to work!
this.MyUserControl1.DataBindings.Add("MyItem", MyCollection, "Self"); // can't get this to work either!
this.MyDataRepeater.DataSource = MyCollection;