【发布时间】:2011-08-29 02:55:04
【问题描述】:
我正在使用以下代码创建一个 TextBox:
TextBox textBox = new TextBox();
textBox.Name = propertyName;
textBox.Text = value;
textBox.Width = FormControlColumnWidth;
textBox.SetResourceReference(Control.StyleProperty, "FormTextBoxStyle");
sp.Children.Add(textBox); //StackPanel
FormBase.Children.Add(sp);
在按钮点击时,我想获取该文本框的文本值,但我无法在代码中指定:
string firstName = FirstName.Text;
因为“FirstName”将在运行时定义。那么如何在编译时不知道文本框名称的情况下获取文本框的文本值呢?
以下是我到目前为止的内容,但它说它找不到“FirstName”,即使它是在运行时定义的:
private void Button_Save(object sender, RoutedEventArgs e)
{
using (var db = Datasource.GetContext())
{
var item = (from i in db.Customers
where i.Id == TheId
select i).SingleOrDefault();
item.FirstName = ((TextBox)FindResource("FirstName")).Text;
db.SubmitChanges();
}
}
可重现的示例:
我在此处发布了此问题的完整可重现示例:Why can't I access a TextBox by Name with FindName()?,也许更易于分析。
【问题讨论】: