我有一个WPF应用程序,它使用Canvas作为它的主UI。自定义控件在运行时动态添加到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添加这些控件并默认它们不可见,然后通过Binding在运行时设置它们的位置并使它们可见,但这有几个原因是不切实际的,一个是可能有一些动态控制或几十个。
有没有办法设置在运行时添加的控件的绝对位置?它甚至可能吗?
答案 0 :(得分:1)
通过静态setter方法设置子控件的Canvas.Top
和Canvas.Left
attached properties。
Canvas.SetLeft(myCoolLabel, 100);
Canvas.SetTop(myCoolLabel, 200);
然后通过
将控件添加到画布canvas.Children.Add(myCoolLabel);
其中canvas
是Canvas控件的名称。