Как динамически разместить элемент управления на холсте в Silverlight? - PullRequest
5 голосов
/ 15 апреля 2009

Я пытаюсь разместить созданный мной элемент управления на Canvas. Идея состоит в том, чтобы иметь возможность динамически добавлять их на лету. Как при нажатии кнопки или в конце DispatchTimer. У меня есть следующее, но это не работает:

    FirstCircleControl mc = new FirstCircleControl();
    Canvas.SetLeft(mc, 100);
    Canvas.SetTop(mc, 100);

Я не вижу никакого элемента управления ...

Ответы [ 3 ]

6 голосов
/ 15 апреля 2009

Размещение элемента управления внутри холста или сетки - двухэтапный процесс.

  1. Добавить элемент управления в дочернюю коллекцию контейнера
  2. Установить местоположение элемента управления в контейнере

У вас есть второй шаг, но вам не хватает первого.

Для холста

Button childButton = new Button();
LayoutCanvas.Children.Add(childButton);
Canvas.SetLeft(childButton, 120);
Canvas.SetTop(childButton, 120);

Для сетки

Button childButton = new Button();
LayoutGrid.Children.Add(childButton);
Grid.SetRow(childButton, 2);
Grid.SetColumn(childButton, 2);
6 голосов
/ 15 апреля 2009

Сначала необходимо добавить элемент управления к Canvas.

yourCanvas.Children.Add(mc)
1 голос
/ 22 августа 2012

Другой (в некоторых случаях более простой) способ сделать это со стороны UIElement:

    (controlItem as UIElement).SetValue(Canvas.TopProperty, topVal);
    (controlItem as UIElement).SetValue(Canvas.LeftProperty, left);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...