2016-09-19 69 views
0

我有一个使用画布作为其主UI的WPF应用程序。自定义控件在运行时动态添加到Canvas。我如何在运行时将这些自定义控件绝对放置在Canvas中?使用XAML,它很直接:在画布中定位自定义控件

<Label Name="myCoolLabel" 
     Content="My Name" 
     Width="200" 
     Height="100" 
     Canvas.Left="{Binding MyLabelX, Mode=OneWay}" 
     Canvas.Top="{Binding MyLabelY, Mode=OneWay}" /> 

Canvas属性允许我通过Binding设置位置。如果我没有使用Binding,我甚至可以设置它。但Canvas属性不能通过代码获得。

我已经考虑通过XAML添加这些控件,并且默认情况下使它们不可见,然后通过绑定在运行时设置它们的位置并使它们可见,但由于几个原因,这是不切实际的,其中一个原因是可能有几个动态控制或几十个。

是否有某种方法来设置在运行时添加的控件的绝对位置?它甚至有可能吗?

回答

1

通过静态设置方法设置子控件的Canvas.TopCanvas.Leftattached properties

Canvas.SetLeft(myCoolLabel, 100); 
Canvas.SetTop(myCoolLabel, 200); 

然后通过

canvas.Children.Add(myCoolLabel); 

其中canvas是Canvas控件的名称控件添加到画布上。

+0

我发现这个解决方案_right after_我发布了问题。但这是正确的答案!谢谢! – Frecklefoot