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

本文关键字:创建 自定义 事件 属性 | 更新日期: 2023-09-27 18:27:27

我创建了一个自己的类,它具有双数据类型X和Y的公共属性,当其中一个属性发生更改时,我希望触发一个事件,该事件将用于更新视觉对象(如画布或其他对象)的位置。我一直在网上寻找答案,但我真的不知道如何正确地做到这一点。我是编程新手,我见过有人提到INotifyPropertyChanged,但我不知道如何使用它,也不知道把东西放在哪里。

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

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

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

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

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

如果你想做的是同一个类的一部分,你可以使用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);
    }
}

您需要学习委托和事件

MSDN也有一个例子,这几乎就是你所问的

从同一页来看,这是相关部分;

    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);
    }