如何在属性更改时创建自定义事件
本文关键字:创建 自定义 事件 属性 | 更新日期: 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);
}