2012-11-16 4 views
2

TextBox 및 datarow 열을 바인딩하려고하지만 작동하지 않습니다. 내 코드 :WPF 코드에서 TextBox 및 DataRow 바인딩

// Member is a DataRow 
for(int i=0;i<Member.Table.Count;++i) 
{ 
    TextBox textbox = TextBox(); 
    textbox.Text = Member.Field<string>(i); 
    Binding binding = new Binding(Member.Table.Columns[i].ColumnName); 
    binding.Source = Member; 
    binding.Path = new PropertyPath(Member.Table.Columns[i].ColumnName); 
    binding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged; 
    binding.Mode = BindingMode.TwoWay; 
    textbox.SetBinding(System.Windows.Controls.TextBox.TextProperty, binding); 
} 

어떤 생각? 생각해 보면

+0

xaml 대신 코드에서이 작업을 수행하는 이유는 무엇입니까? –

+0

"작동하지 않는다"는 것은 무엇을 의미합니까? 오류가 있습니까? 텍스트 상자가 표시되지 않습니까? 데이터가 텍스트 상자에 나타나지 않습니까? 그 문제를 짐작하면, 일단 코드 조각을 떠나면 (즉, Member.Table이 실행중인 XAML의 컨텍스트에 존재하지 않게 됨) 바인딩의 컨텍스트가 사라진다는 것입니다. –

+0

DataRow의 열 수가 다를 수 있으므로 XAML에서이 코드를 수행 할 수 없습니다. 내 루프가 일반적으로보다 복잡합니다. 만들고 텍스트 상자를 바인딩 한 후 표에 추가했습니다. 내 DataContext가 정확하고 Member가 인스턴스 변수입니다. 오류가 없습니다. 내 모든 텍스트 상자가 올바르게 표시됩니다. – user1829826

답변

1

코드에 textbox을 만들지 만 어디에도 표시하지 않으므로 결과가 표시되지 않습니다.

+0

'TextBox textbox = TextBox();를 실행하면 for 루프의 끝을 지나지 않는 TextBox 객체의 새 인스턴스를 만듭니다. 또 다른 요점은 테이블의 행만큼 텍스트 상자가 없으면 양식에있을 수있는 단일 텍스트 상자에 마지막 행만 표시된다는 것입니다. – gashach