J'ai une classe LineG héritée d'une forme qui dessine une ligne simple entre deux points .. Je l'ai fait simplement en ajoutant deux propriétés de dépendance StartPointProperty et EndPointProperty ... Enfin, je veux ajouter une autre fonctionnalité qui est MidPoint, donc quand je dessine la ligne, il y aura un point milieu au milieu de la ligne. Quand je fais glisser la StartPoint ou EndPoint la forme seront redessinés, et quand je fais glisser la MidPoint la forme traduirai en fonction du changement MidPoint ...Comment éviter les propriétés de dépendance récursives
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;
}
}
Quelle est votre question? Et je ne vois pas comment le titre est lié au texte de la question ... –
Je suis tellement désolé, j'ai eu un vrai mal de tête ... Ma question est quand je change le StartPoint ou le EndPoint ça va changer le MidPoint avec ça ... et quand je change de MidPoint il doit changer à la fois StartPoint et EndPoint, mais cela entrera dans une situation récursive ... quand je changerai le StartPoint, le MidPoint changera et le MidPoint changera d'autre part le point de départ et ainsi de suite ... comment résoudre ce problème ... –