2012-11-16 60 views
2

我想綁定文本框和數據行的列,但不起作用。 我的代碼:代碼中的WPF綁定文本框和數據行

// 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

我無法在XAML中執行此代碼,因爲DataRow中的列數可能不同。 我的循環比通常更復雜。創建並綁定我的文本框後,我添加到網格。 我的DataContext是正確的,成員是一個實例變量。 沒有錯誤。我的所有文本框都能正確顯示 – user1829826

回答

1

您正在代碼中創建textbox,但從未在任何地方顯示它,因此它可能正在工作,但您永遠不會看到結果。

+0

當您運行TextBox textbox = TextBox();您正在創建一個TextBox對象的新實例,該對象不會超過for循環的末尾。還有一點是,如果沒有與表格中的行數一樣多的文本框,只有最後一行會顯示在表單上可能存在的單個文本框中。 – gashach