Я создаю 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" будет определено во время выполнения. Итак, как мне получить текстовое значение Textbox, не зная его имени во время компиляции?
Вот что у меня есть, но он говорит, что не может найти «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();
}
}
Воспроизводимый пример:
Я разместил полный воспроизводимый пример этой проблемы здесь: Почему я не могу получить доступ к TextBox по имени с помощью FindName ()? , возможно, проще для анализа.