Почему Canvas.SetLeft и .SetTop не работают в этом коде WPF?C#

Место общения программистов C#
Anonymous
Почему Canvas.SetLeft и .SetTop не работают в этом коде WPF?

Сообщение Anonymous »

Я динамически создаю изображения, добавляемые на холст, и позже мне нужно их переместить. Но этот код не справляется со своей задачей:

Код: Выделить всё

   int slotCount = _cardSlots.Count;

for (int i = 0; i < slotCount; i++)
{
Canvas.SetLeft(_cardSlots[i].Card.CardImage.Image, _cardSlots[i].ScreenRectangle.X );
Canvas.SetTop(_cardSlots[i].Card.CardImage.Image, _cardSlots[i].ScreenRectangle.Y);
}
Изображения не меняют положение. Я попробовал Canvas.invalidatevisual, но это не имело никакого значения.
Однако, если я использую тот же код, но не в цикле, изображения будут перемещаться. например:

Код: Выделить всё

  Canvas.SetLeft(_cardSlots[0].Card.CardImage.Image, _cardSlots[0].ScreenRectangle.X);
Canvas.SetTop(_cardSlots[0].Card.CardImage.Image, _cardSlots[0].ScreenRectangle.Y);
Canvas.SetLeft(_cardSlots[1].Card.CardImage.Image, _cardSlots[1].ScreenRectangle.X);
Canvas.SetTop(_cardSlots[1].Card.CardImage.Image, _cardSlots[1].ScreenRectangle.Y);
Так что этот код работает. Кто-нибудь знает, почему?

Подробнее здесь: https://stackoverflow.com/questions/787 ... s-wpf-code

Вернуться в «C#»