如何在Silverlight中动态地将控件放在画布上?

时间:2009-04-15 00:21:18

标签: c# silverlight canvas

我正在尝试将我创建的控件放在Canvas上。我们的想法是能够动态地动态添加它们。就像点击按钮或DispatchTimer的结尾一样。我有以下内容,但它不起作用:

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

我没有看到任何控件出现......

3 个答案:

答案 0 :(得分:6)

您需要先将控件添加到Canvas

yourCanvas.Children.Add(mc)

答案 1 :(得分:6)

将控件放在画布或网格中需要两个步骤。

  1. 将控件添加到容器的子集合
  2. 在容器中设置控件的位置
  3. 你已经迈出了第二步,但却错过了第一步。

    适用于画布

    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);
    

答案 2 :(得分:1)

另一种(在某些情况下更容易)这样做的方式来自UIElement方:

    (controlItem as UIElement).SetValue(Canvas.TopProperty, topVal);
    (controlItem as UIElement).SetValue(Canvas.LeftProperty, left);