У меня есть ScatterView
на основе XAML, к которому я программно добавляю больше Scatterview ( отныне известных как Scatter2s ).
Каждый из Scatter2s
работает нормально - каждый из нихсодержат ScatterViewItem
s, которые, в свою очередь, содержат форму Ellipse
, и все они отлично рисуются на поверхности, как и хотелось.
Пытаясь нарисовать линии между двумя эллипсами, я пытаюсь получить Scatter2.[AScatterViewItem].Center.X
и .Y
свойств, поэтому я могу установить свойства линии X1Y1, X2Y2, но они возвращаются как NaN.Я также пытался ActualCenter
, что приводит к тому же результату.
Сначала я думал, что это потому, что я пытался получить доступ к этим свойствам до того, как эллипсы были нарисованы на экране, но я напечатал значения свойств после того, как ониВычеркнуты и получили тот же результат.
Я проверил, чтобы каждая из ScatterViewItem
s ширины и высоты была явно установлена перед рисованием, как и ширина и высота эллипса - на всякий случай, если бы выбрасывалосьВычисление свойства center off.
Есть ли лучший способ получить позицию ScatterViewItem
, которая не была явно позиционирована, чем использование свойства Center?
Спасибо
В узле:
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
Код, который добавляет Node
к основному ScatterView
(context.Items.Add(svi)
), вызывается перед функцией CenterToString()
.
Может ли это иметь какое-либо отношение к тому, куда я помещаю тего в моем классе SurfaceWindow?В настоящее время все находится в onInitialised()
, после звонка на base.OnInitialised
.