我在.Net 4.0(c#)winforms项目中使用Visual Basic Power Packs(Microsoft.VisualBasic.PowerPacks.DataRepeater
)中的数据转发器。
我将它绑定(将DataSource
属性设置)为通用List<T>
。 T只是我的商务课程之一。
我在数据中继器中放置的控件是UserControl。
UserControl有一个名为MyItem
的类型为T的公共属性。
我想将UserControl的MyItem
属性绑定到集合中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;