Как добавить UIElement в список <UIElement>? - PullRequest
0 голосов
/ 04 апреля 2011

Я пытаюсь добавить два Canvas к List<Canvas>, но получаю исключение из следующего кода:

List<Canvas> cvList = new List<Canvas>();

Canvas cv = new Canvas();
cv.Width = 100; 
cv.Height = 100;

cvList.Add(cv); // adding first Canvas to List<Canvas>
cvList.Add(cv); // adding the second Canvas to List<Canvas>
...

Чтобы подробнее остановиться на этом вопросе, каждый Canvas должен быть отличным, поскольку каждый может отличать детей TextBox, Ярлык и другие UIElement. Поэтому я думаю, что приведенный выше код не должен работать. Однако, хотя я не могу сделать это:

Canvas cv1 = new Canvas();
cv1.Width = 100;
Canvas cv2 = new Canvas();
cv2.Width = 250;
...

Or 

Canvas[] cv = new Canvas[myInt];

Я не могу сделать выше, потому что размер списка определяется во время выполнения, и я не могу назначить размер для массива или объявить каждый массив отдельно.

Как это сделать правильно? Да, я прочитал список на MSDN, но сайт не сказал мне, как это сделать. Спасибо.

Ответы [ 2 ]

1 голос
/ 04 апреля 2011

Чтобы уточнить ответ Джоэлса, вам нужно сделать следующее:

List<Canvas> cvList = new List<Canvas>();

Canvas canvas1 = new Canvas();
canvas1.Width = 100; 
canvas1.Height = 100;
cvList.Add(canvas1);

Canvas canvas2 = new Canvas();
canvas2.Width = 100; 
canvas2.Height = 100;
cvList.Add(canvas2);

Обратите внимание, что добавление одного и того же элемента дважды в одну и ту же коллекцию List<Canvas> таким образом совершенно законно, однако попыткаиспользовать один и тот же элемент дважды в макете (что может случиться в зависимости от способа использования этого списка) - это не так.

1 голос
/ 04 апреля 2011

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

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