Мое приложение может перемещаться по 3 различным страницам, которые все отображаются в 1 окне (по одной за раз).Все страницы, которые отображаются в одном и том же окне, являются пользовательскими элементами управления.
Всякий раз, когда я нажимаю кнопку «A», создается новая кнопка, которая добавляется в панель стека .Таким образом, в основном, если я нажимаю 5 раз, я получаю 5 кнопок, удобно расположенных рядом друг с другом.Приведенный ниже код перемещает экран со страницы B обратно на A (при условии, что я уже на странице B), здесь я вызываю метод, который выполняет итерацию по списку сохраненных кнопок.
ДляЕсли коротко, я хочу сохранить элементы, созданные в списке, или что-то еще, поэтому, когда это окно загружается снова, я могу просто загрузить значения (кнопки) обратно.
Страница B:
private void btnNoProduction_Click(object sender, RoutedEventArgs e)
{
MainWindow main = new MainWindow();
Switcher.Switch(main);
main.reloadDynamicRegistrationContent();
}
Страница A (главное окно), где я перебираю список с сохраненными кнопками.
public void reloadDynamicRegistrationContent()
{
for (int i = 0; i < GlobalVar._listReg.Count; i++)
{
spHorizontal.Children.Add(GlobalVar._listReg[i]); //ERROR Specified Element is already the logical.....
}
}
Мне нужен какой-то способ сохранить эти кнопки (список, но я продолжаю получатьошибка Указанный элемент уже является логическим дочерним элементом другого элемента. Сначала отключите его. wpf . Не удается получить доступ к списку из статического класса.
Код для создания кнопкидинамически:
private void btnTestRegistration_Click(object sender, RoutedEventArgs e)
{
Button newBtn = new Button();
newBtn.Name = "btnRegistration" + registrationCount.ToString();
newBtn.Width = 151;
newBtn.Height = 73;
newBtn.Click += new RoutedEventHandler(this.newBtn_Click);
Thickness margin = newBtn.Margin;
margin.Left = 10;
margin.Right = 5;
newBtn.Margin = margin;
Style style = this.FindResource("ButtonStyleRegistration") as Style;
newBtn.Style = style;
//force build template
newBtn.ApplyTemplate();
var tb = VisualTreeNavigator.FindVisualChild<TextBlock>(newBtn, "tbRegistration1");
tb.Text = "text cause 1 " + registrationCount.ToString();
var tb2 = VisualTreeNavigator.FindVisualChild<TextBlock>(newBtn, "tbRegistration2");
tb2.Text = "text cause 2 " + registrationCount.ToString();
spHorizontal.Children.Add(newBtn);
GlobalVar.AddButtonToList(newBtn);
registrationCount++;
}
Пока все добавлено правильно, но я не могу сохранить набор кнопок, которые были созданы всякий раз, когда я хочу вернуться к этому экрану позже.
GlobalVar - этостатический клзадница, где у меня есть список.Здесь я пытаюсь сохранить содержимое всех кнопок, которые создаются в списке.
public class GlobalVar
{
public static List<Button> _listReg = new List<Button>();
public static void AddButtonToList(Button b)
{
_listReg.Add(b);
}
}