Добавить контроль через цикл - это возможно? - PullRequest
1 голос
/ 13 декабря 2011

Возможно ли добавить элементы управления через цикл в элемент управления? Сложность заключается в названии: оно одинаково в каждом тираже, поэтому я получаю только один элемент управления с именем hu, а не 10. Как я могу изменить код, чтобы получить 10 Border с?

for (int i = 0; i < 10; i++)
{
    Border hu = new Border();
    hu.Width = 10;
    hu.Height = 10;
    hu.Margin = new Thickness(10 * i);
    hu.Background = (Brush) typeof(Brushes).GetProperty(Felder[i]).GetValue(null, null);
    mastergrid.Children.Add(hu);
}

Ответы [ 2 ]

3 голосов
/ 13 декабря 2011

Во-первых, да, это возможно. Что вы можете сделать, так это установить имя

hu.Name = string.Format("Border_{0}", i);

Может быть, не в случае границы, а, например, кнопки. Как я могу получить данные, которые отвечают за контроль в событии, потому что вы связываете одно событие для нескольких элементов управления. Обычно используют свойство Control.Tag для добавления дополнительных данные и использовать их в событии. Например:

public MainWindow()
{
    InitializeComponent();

    for (int i = 0; i < 10; i++)
    {
        Border hu = new Border();
        hu.Width = 10;
        hu.Height = 10;
        hu.Margin = new Thickness(10 * i);
        hu.Tag = anyObject;
        hu.MouseDown += new MouseButtonEventHandler(hu_MouseDown);
    }
}

void hu_MouseDown(object sender, MouseButtonEventArgs e)
{
    Border b = (Border)sender;
    // b.Tag contains your "anyObject"
}

Обновление

Имейте в виду, что имя переменной, содержащей ваш экземпляр, в вашем случае "hu", НЕ совпадает с Name свойством вашего элемента управления.

0 голосов
/ 13 декабря 2011

В вашем коде вы не создаете несколько элементов управления с именем "hu". Вы создаете несколько неназванных элементов управления, имя локальной переменной не имеет значения. И делать это должно быть совершенно нормально, если только вам не нужно имя. Если вы это сделаете, вы можете просто создать уникальное имя для каждого элемента управления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...