Win Forms:如何将DataConpeater中UserControl的属性绑定到Collection Item本身

时间:2013-07-24 22:48:33

标签: c# winforms data-binding datarepeater

我在.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;

0 个答案:

没有答案