2014-07-01 2 views
0

LinkData 속성이이 코드에 설정되어 있지 않은 이유는 무엇입니까?바인딩 목록 <T> from UserControl

namespace UserControlBinding 
{ 
    public partial class Form1 : Form 
    {   
     private void Form1_Load(object sender, EventArgs e) 
     {   
      List<DEST> R = new List<DEST>(); 
      R.Add(new DEST() { Labels = "C:\\\\Books\\logogog.png" }); 
      R.Add(new DEST() { Labels = "C:\\\\Books\\121.png" });   

      userControl11.DataBindings.Add(new System.Windows.Forms.Binding("LinkData", R, "Labels", true)); 
     } 
    }   

    public class DEST 
    { 
     public string Labels { get; set; } 
    } 
} 

namespace UserControlBinding 
{ 
    [System.ComponentModel.DefaultBindingProperty("LinkData")] // Bind UserControl 
    public partial class UserControl1 : UserControl 
    { 
     private List<DEST> _LinkData; 

     public List<DEST> LinkData 
     { 
      get { return _LinkData; } // unknown ???? 
      set { _LinkData = value;} 
     }     
    } 
} 

이벤트 또는 이벤트를 추적해야합니까?

userControl11.DataBindings.Add(new System.Windows.Forms.Binding("LinkData", R, "Labels", false, DataSourceUpdateMode.OnPropertyChanged)); 

하고 LinkData의 당신의 정의 :

private string _LinkData; 

public string LinkData 
{ 
    get { return _LinkData; } // unknown ???? 
    set { _LinkData = value; } 
} 
Labels 속성에 바인딩 때문이다

아닌 전체 목록 당신이 당신의 결합을 변경할 때

답변

1

실제로 작동 하는가 .

var x = new { X = R }; 

userControl11.DataBindings.Add(new System.Windows.Forms.Binding("LinkData", x, "X", false, DataSourceUpdateMode.OnPropertyChanged)); 

var x 부분은 당신이 원한다면, 당신은 당신의 자신의 클래스를 생성 할 수있는 익명 형식을 생성합니다

그래서 솔루션은 이런 식 결합을 변경하는 것입니다. 바인딩은 이제 해당 클래스의 X에 바인딩됩니다.