0
我有一个类LineG继承了一个形状,将在两点之间绘制一条简单的线..我通过添加两个依赖项属性StartPointProperty和EndPointProperty来做到这一点......最后我想添加另一个功能是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;
}
}
你的问题是?我不明白标题与问题的文本是如何相关的... – 2010-07-23 21:10:33
我很抱歉,我真的很头痛...... 我的问题是当我改变StartPoint或EndPoint时,它会改变MidPoint ...并且当我改变MidPoint时,它必须改变StartPoint和EndPoint,但是这会进入递归状态......当我改变StartPoint时,MidPoint将改变,而另一方面MidPoint将改变StartPoint等...如何解决这个问题... – 2010-07-24 11:01:37