C# WPF Canvas.GetLeft()始终接收NaN值
我正试图离开WPF中的一个控件。但我总是收到NaN值,而不是双值。以下是我正在尝试的: XAML:C# WPF Canvas.GetLeft()始终接收NaN值,c#,wpf,C#,Wpf,我正试图离开WPF中的一个控件。但我总是收到NaN值,而不是双值。以下是我正在尝试的: XAML: 提前感谢。您只能在明确设置元素的初始值时,为元素获取Canvas.GetLeft的值,否则它将返回NaN(这是预期的WPF行为) 高度和宽度与相同 在您的示例中,在xaml中,您没有在边框上设置任何画布。Left属性,因此当您在code中访问它时,它将返回NaN 要获取实际的左坐标,请使用TranslatePoint p = localItem.TranslatePoint(new Point(0
提前感谢。您只能在明确设置元素的初始值时,为元素获取
Canvas.GetLeft
的值,否则它将返回NaN
(这是预期的WPF
行为)
高度和宽度与相同
在您的示例中,在xaml
中,您没有在边框上设置任何画布。Left
属性,因此当您在code中访问它时,它将返回NaN
要获取实际的左
坐标,请使用TranslatePoint
p = localItem.TranslatePoint(new Point(0, 0), br);
double currentLeft = p.X;
double currentTop = p.Y;
你看过这篇文章吗?有时候一小段代码非常强大。。谢谢你,瓜拉夫
Point p = e.GetPosition(cnvSaver);
if (x > p.X)
{
// Move to Left
Border br = cnvViewerUpper.Parent as Border;
double left = Canvas.GetLeft(br) - Math.Abs(p.X - x);
if(left > 0){
Canvas.SetLeft(br, left);
}
MessageBox.Show("move to left");
}
else if (x == p.X)
{
MessageBox.Show("standing");
}
else {
// Move to Right
double left = Canvas.GetLeft(borUpper);
if (left > 0)
{
Canvas.SetLeft(borUpper, left);
}
MessageBox.Show("move to right");
}
p = localItem.TranslatePoint(new Point(0, 0), br);
double currentLeft = p.X;
double currentTop = p.Y;