我创建了一个我自己的类,它具有双数据类型X和Y的公共属性,当其中一个被更改时,我想要一个事件来触发,它将用于更新视觉对象的位置,如帆布什么的。我一直在网上寻找答案,我真的不明白如何正确地做到这一点。我是编程的新手,我看到人们提到了INotifyPropertyChanged,但我不知道如何使用它或在哪里放东西。
我希望在X或Y更改时发生事件,我可以将方法附加到...请帮助
答案 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);
}