Я создаю текстовое поле динамически. У меня есть две колонки в моей сетке. Я хочу добавить новое текстовое поле в строку, если другое значение текстового поля = «чай». Я хочу создать новое текстовое поле для соответствующего изменения значения текстового поля строки. Я не могу использовать тег, чтобы получить выбранную строку здесь. потому что я уже использовал тег для какой-то цели. У меня нет большой идеи о теге. Как бы то ни было, как добавить новое текстовое поле в столбец1 в соответствующую строку? Это мой код ..Динамически добавлять текстовое поле в WPF
public int count = 1;
public TextBox txt1;
private void btn_addnew_Click(object sender, RoutedEventArgs e)
{
//Creating Rows..
RowDefinition row0 = new RowDefinition();
row0.Height = new GridLength(40);
grid1.RowDefinitions.Add(row0);
//Creating columns..
ColumnDefinition col0 = new ColumnDefinition();
ColumnDefinition col1 = new ColumnDefinition();
col0.Width = new GridLength(150);
col1.Width = new GridLength(250);
grid1.ColumnDefinitions.Add(col0);
grid1.ColumnDefinitions.Add(col1);
int i = count;
//1st Column TextBox
txt1 = new TextBox();
txt1.Margin = new Thickness(10, 10, 0, 0);
Grid.SetRow(txt1, i);
Grid.SetColumn(txt1, 0);
txt1.Tag = txt1;
txt1.MouseEnter+=txt1_MouseEnter;
txt1.TextChanged += txt1_TextChanged;
grid1.Children.Add(txt1);
count++;
}
private void txt1_MouseEnter(object sender, MouseEventArgs e)
{
txt1 = ((TextBox)sender).Tag as TextBox;
popup.IsOpen = true;
}
public TextBox txt2;
private void txt1_TextChanged(object sender, TextChangedEventArgs e)
{
if (txt1.Text.ToString() == "Tea")
{
txt2 = new TextBox();
//How to set row here?
Grid.SetRow(txt2, ??);
Grid.SetColumn(txt2, 1);
txt2.Margin = new Thickness(10, 10, 0, 0);
grid1.Children.Add(txt2);
}
else
{
grid1.Children.Remove(txt2);
}
}
Я хотел бы предложить вам использовать StackPanel в этом случае, или просто добавить defination строки и использовать счетчик для установки строки или, возможно, вы также можете использовать UniformGrid. – pushpraj
Прошу прощения, но я не уверен, чего вы пытаетесь достичь этим. Как вы будете отслеживать данные, которые вы войдете во множество текстовых полей, которые вы добавите? Если вы предоставите datamodel, поддерживающий ваш пользовательский интерфейс, тогда будет n количество способов достижения этого элегантно. – Nitin
Ничего особенного. Я просто хочу добавить текстовое поле в соответствующую строку для значения Textbox = «tea». Я не знаю, как получить индекс Row. – JohnPaul