0
Сначала я также подумал, что это небольшая проблема, но я действительно не знаю, как ее решить!PropertyChanged is null
Я написал свой класс «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);
}
}
спасибо!
У меня такое чувство, что вы что-то смешали. Либо вы реализуете 'INotifyPropertyChanged', либо используете свойства зависимостей. Где и как вы будете использовать этот класс? – ZoolWay
Я предполагаю, что вы привязываетесь к свойствам 'X' и' Y'? Не уверенно на 100%, но я думаю, что презентация не будет подписаться на ваш 'PropertyChanged', так как вы зарегистрированы здесь DependencyProperties. «INotifyPropertyChanged» и «DependencyProperty» являются двумя эксклюзивными сценариями IMO. –
О, я не знал, что мне не разрешено использовать оба в одном значении !! Спасибо! Могу ли я использовать оба класса? – MisterPresident