【问题标题】:WPF Binding TextBox and DataRow in codeWPF 在代码中绑定 TextBox 和 DataRow
【发布时间】:2012-11-17 18:20:39
【问题描述】:

我想绑定 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);
}

有什么想法吗? 认为

【问题讨论】:

  • 你为什么用代码而不是 xaml 来做这个?
  • 我写了一小段代码。但是我的文本框在我的窗口中显示得很好......
  • “不起作用”是什么意思?有错误吗?文本框不显示?数据不显示在文本框中吗?我猜问题是,一旦您离开那段代码,绑定的上下文就会消失(即,Member.Table 不再存在于正在运行的 XAML 的上下文中)。
  • 我无法在 XAML 中执行此代码,因为 DataRow 中的列数可能不同。我的循环比通常更复杂。创建并绑定我的文本框后,我添加到网格中。我的 DataContext 是正确的,并且 Member 是一个实例变量。没有错误。我所有的文本框都正确显示
  • 我的绑定文本框和DataRow的代码是否正确?

标签: c# wpf binding datarow


【解决方案1】:

您正在代码中创建textbox,但从未在任何地方显示它,因此它可能正在工作,但您永远不会看到结果。

【讨论】:

  • 当您运行 TextBox textbox = TextBox(); 时,您正在创建一个 TextBox 对象的新实例,该实例在 for 循环结束后将不存在。另一点是,没有与表格中的行一样多的文本框,只有最后一行会显示在表单上可能存在的单个文本框中。
猜你喜欢
  • 2011-01-28
  • 1970-01-01
  • 2011-02-08
  • 1970-01-01
  • 2021-07-23
  • 2017-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多