Canvas.SetTop(element,position)有什么问题
What is wrong with Canvas.SetTop(element,position)
我正在尝试使用鼠标并通过代码移动和重新定位元素。但我想我错过了什么或者做错了什么。所以我构建了一个小示例应用程序。它只是一个带有 MainWindow 函数的空 wpf 应用程序
public MainWindow()
{
InitializeComponent();
Label lText = new Label();
lText.Content = "this is my test label";
lText.Height = 50;
lText.Width = 50;
lText.Background = Brushes.Aqua;
// do I really need to do this?
lText.VerticalAlignment = System.Windows.VerticalAlignment.Top;
lText.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
// this part already fails
Canvas.SetTop(lText, 20);
Canvas.SetLeft(lText, 10);
this.Content = lText;
}
附加属性 Canvas.Left
和 Canvas.Top
(在后面的代码中由 Canvas.SetLeft
和 Canvas.SetTop
方法设置)仅对以下元素有效Canvas 控件的直接子控件。
所以在主窗口的 XAML:
中声明一个 Canvas 作为内容元素
<Window ...>
<Canvas x:Name="canvas" />
</Window>
然后在后面的代码中将元素添加到 Canvas' Children
集合中:
Canvas.SetTop(lText, 20);
Canvas.SetLeft(lText, 10);
canvas.Children.Add(lText);
解决方案是必须先在 Xaml 中设置 Left 和 Top 属性,然后才能阅读它。我总是得到 NaN,因此也无法设置正确的值。
我正在尝试使用鼠标并通过代码移动和重新定位元素。但我想我错过了什么或者做错了什么。所以我构建了一个小示例应用程序。它只是一个带有 MainWindow 函数的空 wpf 应用程序
public MainWindow()
{
InitializeComponent();
Label lText = new Label();
lText.Content = "this is my test label";
lText.Height = 50;
lText.Width = 50;
lText.Background = Brushes.Aqua;
// do I really need to do this?
lText.VerticalAlignment = System.Windows.VerticalAlignment.Top;
lText.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
// this part already fails
Canvas.SetTop(lText, 20);
Canvas.SetLeft(lText, 10);
this.Content = lText;
}
附加属性 Canvas.Left
和 Canvas.Top
(在后面的代码中由 Canvas.SetLeft
和 Canvas.SetTop
方法设置)仅对以下元素有效Canvas 控件的直接子控件。
所以在主窗口的 XAML:
中声明一个 Canvas 作为内容元素<Window ...>
<Canvas x:Name="canvas" />
</Window>
然后在后面的代码中将元素添加到 Canvas' Children
集合中:
Canvas.SetTop(lText, 20);
Canvas.SetLeft(lText, 10);
canvas.Children.Add(lText);
解决方案是必须先在 Xaml 中设置 Left 和 Top 属性,然后才能阅读它。我总是得到 NaN,因此也无法设置正确的值。