首先,我也认为这是一个小问题,但我真的不知道如何解决它!
我写了一个"Point“类来实现PropertyChanged,但是它不能工作,因为"PropertyChanged==null”是真的。
这里是mySource:
public class RaPoint : DependencyObject, INotifyPropertyChanged
{
public RaPoint() : this(0,0)
{
}
public RaPoint(double X, double Y)
{
this.X = X;
this.Y = Y;
}
public RaPoint(Point Position)
: this(Position.X, Position.Y)
{
}
public RaPoint(RaPoint Position)
: this(Position.X, Position.Y)
{
}
public static RaPoint operator +(RaPoint P1, Vector V1)
{
P1.X += V1.X;
P1.Y += V1.Y;
return P1;
}
public double X
{
get
{
return (double)GetValue(XProperty);
}
set
{
SetValue(XProperty, value);
RaisePropertyChanged("X");
}
}
public static readonly DependencyProperty XProperty = DependencyProperty.Register("X", typeof(double), typeof(RaPoint), new FrameworkPropertyMetadata()
{
BindsTwoWayByDefault = true,
DefaultUpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged
}
);
public double Y
{
get
{
return (double)GetValue(YProperty);
}
set
{
SetValue(YProperty, value);
RaisePropertyChanged("Y");
}
}
public static readonly DependencyProperty YProperty = DependencyProperty.Register("Y", typeof(double), typeof(RaPoint), new FrameworkPropertyMetadata()
{
BindsTwoWayByDefault = true,
DefaultUpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged
}
);
public override string ToString()
{
return String.Format("X:{0} Y:{1}", X.ToString(), Y.ToString());
}
public event PropertyChangedEventHandler PropertyChanged;
protected void RaisePropertyChanged(string name)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(name));
}
}
public void Set(double X, double Y)
{
this.X = X;
this.Y = Y;
}
public void Set(RaPoint Position)
{
Set(Position.X, Position.Y);
}
public void Set(Point Position)
{
Set(Position.X, Position.Y);
}
}谢谢!
发布于 2015-05-04 02:13:39
您是否在对象DataContext上设置了正确的值?例如: this.DataContext = raPoint;
https://stackoverflow.com/questions/30017497
复制相似问题