如何在更改属性时创建自定义事件?

时间:2012-03-11 03:18:55

标签: c# wpf events properties inotifypropertychanged

我创建了一个我自己的类,它具有双数据类型X和Y的公共属性,当其中一个被更改时,我想要一个事件来触发,它将用于更新视觉对象的位置,如帆布什么的。我一直在网上寻找答案,我真的不明白如何正确地做到这一点。我是编程的新手,我看到人们提到了INotifyPropertyChanged,但我不知道如何使用它或在哪里放东西。

我希望在X或Y更改时发生事件,我可以将方法附加到...请帮助

3 个答案:

答案 0 :(得分:0)

在视图模型类中,在X和Y属性的setter中,您可以调用更新方法:

    public double X
    {
        get
        {
            return x;
        }
        set
        {
            if (value != x)
            {
                x= value;
                OnPropertyChanged("X");
                VisualObjectUpdateMethod();
            }
        }
    }
    private double x;

更新您想要更新的内容的逻辑将位于VisualObjectUpdateMethod中。

答案 1 :(得分:0)

如果你想做的事情是同一个班级的一部分,你可以使用setter:

public class Something
{
    private string _Message;
    public string Message
    {
        get { return _Message;
        set
        {
            if (_Message != value)
            {
                _Message = value;
                CallSomeMethod();
            }
        }
    }

    public void CallSomeMethod()
    {
        Debug.WriteLine("Message is now: " + Message);
    }
}

答案 2 :(得分:0)

您需要了解Delegates and Events

MSDN也有一个example,这正是你所要求的

在同一页面上,这是相关部分;

    public void Update(double d)
    {
        radius = d;
        area = 3.14 * radius * radius;
        OnShapeChanged(new ShapeEventArgs(area));
    }
    protected override void OnShapeChanged(ShapeEventArgs e)
    {
        // Do any circle-specific processing here.

        // Call the base class event invocation method.
        base.OnShapeChanged(e);
    }