返回 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之后。

返回 NaN 的 ScatterViewItem.Center(X 和 Y)属性

在您设置中心或用户移动 SVI 之前,不会设置中心。我会设置它,因为 SV 只是随机放置它们,否则。如果您真的不希望这样做,则需要使用 TransformToAncestor 如在 wpf 的窗口中获取元素的绝对位置,以获取 SVI 中心相对于其父 SV 的位置。