Pie*_*rto 0 c# wpf events event-handling custom-events
我有我的课程,我定义了我的活动:
public class EventRaiserUtility
{
public event EventHandler updateList;
public void updateListEvent()
{
if (updateList != null)
{
updateList(this, EventArgs.Empty);
}
}
public static EventRaiserUtility raiser = new EventRaiserUtility();
}
Run Code Online (Sandbox Code Playgroud)
这就是我举起活动的地方:
EventRaiserUtility.raiser.updateListEvent();
Run Code Online (Sandbox Code Playgroud)
最后这是我正在尝试创建监听器的地方:
...
EventRaiserUtility.raiser.updateList += new EventHandler(raiser_updateList);
//placed in the init method of another class
...
private void raiser_updateList(object sender, EventArgs e)
{
connType = MainWindowViewModel.getTTC();
}
Run Code Online (Sandbox Code Playgroud)
简单地说:此事件必须在更新列表时通知,然后使用getTTC()with 更新另一个列表raiser_updateList.
但从raiser_updateList未被称为.为什么?我所有的3个代码段都在3个不同的类(同一个项目)中,但这不是问题......对吧?
您在EventRaiserUtility调用之前创建了一个新的updateListEvent(U顺便说一下,它应该有一个资本来遵循.NET约定; ditto updateList=> UpdateList) - 但是您要创建一个单独 EventRaiserUtility的以便订阅该事件.它们是不同的对象,因此具有不同的事件订阅者.如果您在提升事件之前始终创建新对象,则永远不会有任何订阅者.
你应该有一个单一的 EventRaiserUtility存储在包含类的一个实例变量-你会创建一个建筑,然后订阅事件在一个地方的提高它在另一个...但因为他们会谈论同EventRaiserUtility对象,你不会失去订阅.
(目前尚不清楚这个实用程序类实际上有多大价值,说实话 - 为什么不直接在你的类中声明事件?为什么在EventHandler具有完全相同的签名时声明自己的委托?)