在画布中定位自定义控件
本文关键字:自定义控件 定位 布中 | 更新日期: 2023-09-27 18:07:58
我有一个使用Canvas作为主UI的WPF应用程序。自定义控件在运行时动态地添加到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属性允许我通过绑定来设置位置。我甚至可以设置它,如果我不使用绑定。但是Canvas属性在代码中是不可用的。
我考虑过通过XAML添加这些控件,使它们默认不可见,然后在运行时通过绑定设置它们的位置,使它们可见,但这是不切实际的,有几个原因,一个是可能有几个或几十个动态控件。
是否有一些方法来设置在运行时添加的控件的绝对位置?这可能吗?
通过子控件的静态setter方法设置Canvas.Top
和Canvas.Left
附加属性。
Canvas.SetLeft(myCoolLabel, 100);
Canvas.SetTop(myCoolLabel, 200);
然后通过
将控件添加到Canvas中canvas.Children.Add(myCoolLabel);
其中canvas
为Canvas控件的名称