2013-04-07 2 views
1

У меня проблема с получением свойств динамически добавленного поля.Как получить динамически добавленный элемент пользовательского интерфейса из C#

Если я что-то подобное

<Rectangle Name="field_0_0" Width="10" Height="10" /> 

затем в C# код я могу получить на это

field_0_0.Width = 20; 

Но в моем приложении, я сделал что-то вроде этого

for(i = 0; i < 5; i++) { 
    for(j = 0; j < 5; j++) { 
     String fieldName = "field_" + i + "_" + j; 
     Rectangle rec = new Rectangle(); 
     rec.Name = fieldName; 
     Container.Children.Add(rec); 
    } 
} 

Теперь проблема в том, что я не знаю, как называть эти поля в моем коде, когда я их на экране? Например, я хочу изменить цвет заливки field_1_1

Как я могу получить этот прямоугольник от имени?

+0

Почему вы не можете перечислить 'Container.Children' и искать свой прямоугольник? – Filip

+0

причина Если у меня будет 100000 прямоугольников, петляющих каждый раз, чтобы найти их, они будут тратить много времени – Fixus

+1

Время процессора? Метод FindName, вероятно, делает то же самое. – Filip

ответ

2

Вы можете использовать метод FindName.

object findRect = Container.FindName("field_1_1"); 
if (findRect is Rectangle) 
{   
    Rectangle rect = findRect as Rectangle; 
    //change rect properties 
} 
+0

Это то, что я искал. Спасибо ! – Fixus

Смежные вопросы