返回 NaN 的 ScatterViewItem.Center(X 和 Y)属性
本文关键字:属性 NaN ScatterViewItem Center 返回 | 更新日期: 2023-09-27 18:15:21
我有一个基于 XAML 的ScatterView
,我正在以编程方式向其添加更多 Scatterviews(以下简称 Scatter2s(。
每个Scatter2s
都工作正常 - 它们每个都包含ScatterViewItem
,而又包含Ellipse
形状,并且这些都按照需要完美地绘制到表面上。
两个椭圆之间绘制线条时,我尝试获取Scatter2.[AScatterViewItem].Center.X
和.Y
属性,因此我可以设置线条的 X1Y1,X2Y2 属性,但它们返回为 NaN。我也尝试了ActualCenter
结果相同的结果。
我最初认为这是因为在屏幕上绘制省略号之前我尝试访问这些属性,但我在绘制它们并得到相同的结果后打印了属性值。
我检查以确保在绘制之前明确设置了每个ScatterViewItem
的宽度和高度,椭圆的宽度和高度也是如此 - 以防万一这会破坏中心属性的计算。
有没有比使用 Center 属性更好的方法来获取尚未显式定位的ScatterViewItem
的位置?
谢谢
在节点中:
public void CenterToString()
{
Console.Out.WriteLine("Actual centre: " + svi.ActualCenter.toString());
Console.Out.WriteLine("Centre: " + svi.Center.toString());
}
在我的主课上
Node node_one = ((GeneNetwork) context).getNode(localNodeIds[0]);
node_one.CenterToString();
给出输出:
在实际中心到字符串:NaN,NaN
中心到弦:NaN,NaN
主ScatterView
(context.Items.Add(svi)
(中添加Node
的代码在CenterToString()
函数之前调用。
它是否与我在SurfaceWindow类中放置它的位置有关?目前,一切都在onInitialised()
,在调用base.OnInitialised
之后。
在您设置中心或用户移动 SVI 之前,不会设置中心。我会设置它,因为 SV 只是随机放置它们,否则。如果您真的不希望这样做,则需要使用 TransformToAncestor 如在 wpf 的窗口中获取元素的绝对位置,以获取 SVI 中心相对于其父 SV 的位置。