У меня есть класс LineG, унаследованный от формы, которая будет рисовать простую линию между двумя точками. Я сделал это просто добавив два свойства зависимостей StartPointProperty и EndPointProperty ... Наконец, я хочу добавить еще один функциональность, которая является MidPoint, поэтому, когда я рисую линию, в середине линии будет средний пункт. Когда я перетащить StartPoint или EndPoint форма будет перерисовывать, и когда я перетащить MidPoint форму переведут в зависимости от изменения MidPoint ...Как избежать рекурсивных зависимых свойств
private static void PropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
LineG lineG = (LineG)d;
if (e.Property.Name == "StartPoint")
{
}
else if (e.Property.Name == "EndPoint")
{
}
else //if MidPoint
{
Point p1 = (Point)e.OldValue;
Point p2 = (Point)e.NewValue;
double offsetX = p2.X - p1.X;
double offsetY = p2.Y - p1.Y;
lineG.StartPoint = new Point(lineG.StartPoint.X + offsetX, lineG.StartPoint.Y + offsetY);
lineG.EndPoint = new Point(lineG.EndPoint.X + offsetX, lineG.EndPoint.Y + offsetY);
lineG.MidPoint = GeneralMethods.MidPoint(lineG.StartPoint, lineG.EndPoint);
}
lineG.InvalidateMeasure();
}
protected override Geometry DefiningGeometry
{
get
{
lg.StartPoint = StartPoint;
lg.EndPoint = EndPoint;
return lg;
}
}
Что вы хотите сказать? И я не вижу, как название связано с текстом вопроса ... –
Мне очень жаль, у меня была настоящая головная боль ... Мой вопрос в том, когда я меняю StartPoint или EndPoint, он изменит MidPoint с ним ... и когда я меняю MidPoint, он должен изменить как StartPoint, так и EndPoint, но это приведет к рекурсивной ситуации ... при изменении StartPoint, MidPoint изменится, а MidPoint с другой стороны изменится StartPoint и т. д. ... как решить эту проблему ... –