如何在属性的setter中触发事件



我有一个名为";TrendPoint";ITrendPoint类型。我需要提高一个";OnTrendPointChanged";每当TrendPoint的值发生变化并执行一组操作时,就会发生事件。我已经尝试了以下操作,但似乎无法继续:

public class TestClass:ObservablePoint
{
private ITrendPoint trendPoint;
public ITrendPoint TrendPoint{
get{ return trendPoint ;}
set{ this.trendPoint= value;
//Need to Call the event handler 
// "OnTrendPointChanged"
}

public void TestJob()
{
//The TrendPoint is being set 
// here
TrendPoint= 
Services.getTrendPoint();
}

//The event handler
private void 
OnTrendPointChanged(object sender, 
ValueChangedEventArgs<string> e)
{
switch(e.value):
case "HIGH":
Log("TR HIGH");
case "Low":
Log("TR LOW");
//Other such conditions
.
.
.

}
}

我不知道我到底是如何得到事件处理程序";OnTrendPointChanged";每当"0"的值为0时执行;TrendPoint";更改。感谢您的帮助!

我不清楚在代码中设置事件处理程序是否有任何意义。

把它放在一边。您似乎没有使用sender,所以它可以为null。也许你有一些代码使用了你没有向我们展示的代码。在这种情况下,你需要传递发送者的一些实例。这与你提供的内容不清楚(顽皮(。

因此,我们可以为发送方传递null,但需要一个valuechangedeventargs实例来传递。

类似于:

public ITrendPoint TrendPoint{
get{ return trendPoint ;}
set{ this.trendPoint= value;
var vc = new ValueChangedEventArgs<TrendPoint>(this.trendPoint);
OnTrendPointChanged(null, vc);
}

假设OnTrendPointChanged在同一个类中。看起来是你提供的,但也许不是。

如果处理程序在其他类中,那么显然需要引用该类的实例。

我怎么知道一个价值观的改变是这样的?我查了一下:

https://learn.microsoft.com/en-us/dotnet/api/microsoft.visualstudio.language.intellisense.valuechangedeventargs-1?view=visualstudiosdk-2022

希望所有这些都能有所帮助。

最新更新