Добавление элементов в StackPanel

220
16 сентября 2017, 21:55

Пытаюсь динамически добавлять элементы в StackPanel.

<StackPanel Name="Panel1" Grid.Column="1" Grid.Row="2" HorizontalAlignment="Left" Height="auto" Margin="0,41,0,0" VerticalAlignment="Top" Width="auto">
</StackPanel>

Вот класс, где пытаюсь добавить:

public class DynamicCreator 
{
    MainWindow main = new MainWindow();
    public void TextBoxCreator(int n)
    {
        for (int i = 0; i < n; i++)
        {
            main.Panel1.Children.Add(new Label
            {
                Content = "Test"
            });
        }
        main.UpdateLayout();
    }
}

Но элементы не появляются. Что делать? Где ошибка?

Answer 1

Думаю, что вы добавляете не в то окно. Не создавайте новый экземпляр MainWindow, возьмите существующий.

Answer 2

Храни свои Label где-то в ObservableCollection:

public ObservableCollection<Label> myLabels { get; set; } = new ObservableCollection<Label>();

Делай привязку:

<ItemsControl Width="Auto" Height="Auto" ItemsSource="{Binding myLabels}"></ItemsControl>

Добавляй в коде нужные тебе Label:

myLabels.Add(...);

P.S: не забудь про DataContext: DataContext = this.

READ ALSO
Передача массива байт на вход методу

Передача массива байт на вход методу

Доброго времени сутокРазбираюсь с исходником одной программы, которая распаковывает rar-файлы (NUnrar - https://nunrar

143
Двумерные массивы c# как в php

Двумерные массивы c# как в php

Конструкция в php:

180
не вычисляется значение

не вычисляется значение

Не вычисляются переменные pozblx и pozbly которые должны представлять собой позицию блока div,после исполнения pozblx и pozbly принимают предустановленые...

221
Как из массива получить значения и разбить их на буквы?

Как из массива получить значения и разбить их на буквы?

Есть какой-то элегантный способ разбить значение на буквы, за тем перейти к следующему значению? У меня что-то одни костыли да ошибки получаются

418