首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PropertyChanged为空

PropertyChanged为空
EN

Stack Overflow用户
提问于 2015-05-04 02:07:22
回答 1查看 169关注 0票数 0

首先,我也认为这是一个小问题,但我真的不知道如何解决它!

我写了一个"Point“类来实现PropertyChanged,但是它不能工作,因为"PropertyChanged==null”是真的。

这里是mySource:

代码语言:javascript
复制
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);
    }
}

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2015-05-04 02:13:39

您是否在对象DataContext上设置了正确的值?例如: this.DataContext = raPoint;

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30017497

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档