我已经完成了这项研究,但代码并没有完全符合我的要求。基本上我已经创建了一个ToolBar,它只显示在父窗口(xaml)中调用的事件的图标。因此,例如,如果我调用了New_Click事件,那么New Button会隐藏所有其他事件。
//NEW
public event btnNew_ClickedEventHandler btnNew_Click;
public delegate void btnNew_ClickedEventHandler(object sender);
private void btnNew_MouseUp(object sender, MouseButtonEventArgs e)
{
if (btnNew_Click != null) {
btnNew_Click(this);
EnableIcons();
}
}
这将是声明事件的代码。
//Check if Icon should be shown
if (btnNew_Click != null & iconName == "New") {
toolIcon.MouseUp += btnNew_MouseUp;
}
使用图标注册事件。现在为btnNew_Click我是null值,即使我已经在第一个代码块中正确声明了......任何想法为什么?
答案 0 :(得分:0)
如果某个活动有0个订阅者,则该活动将保持为空。只要您为“btnNew_Click”订阅事件处理程序,它就不再为null。您已声明了您的事件并将其事件处理程序类型设置为您的委托,现在您需要订阅该事件。您只需要在触发之前检查事件是否为空。因为,如果没有订阅者,没有理由发起事件。看起来你只需要从这里删除空检查:
//Check if Icon should be shown
if (iconName == "New") {
toolIcon.MouseUp += btnNew_MouseUp;
}