[英]Confused in Events & RelayCommand (C#)
我是活动的初学者,尝试构建MVVM ...
**问题1:
参考一些使用事件覆盖ArrayList类的在线示例: http : //msdn.microsoft.com/zh-cn/library/aa645739( v=vs.71) .aspx
public delegate void ChangedEventHandler(object sender, EventArgs e);
public class ListWithChangedEvent: ArrayList
{
public event ChangedEventHandler Changed;
protected virtual void OnChanged(EventArgs e) {if (Changed != null) Changed(this, e);}
...
}
我是否正确地说,如果我通过向其中添加一个事件来覆盖任何类,则只要更改/调用了该覆盖类中的任何成员/方法,该方法OnChanged就会自动运行? (我可以在调试时看到它吗?)
**问题2:
对不起,我对RelayCommand内部的操作感到困惑。 具体来说,为什么在EventHandler中可以将CanExecuteChanged添加到ConfigurationManager中,然后同时从ConfigurationManager中删除该方法呢?
提前致谢。
关于第一个问题,我认为您误会了一些; 仅添加一个名为OnChanged的方法并没有达到您描述的效果。 与任何其他方法一样,必须由其他一些代码调用才能执行。 由于基类及其方法对派生类一无所知,因此它们不会调用方法/事件-甚至不会“通过约定”,因为它被命名为OnChange。
我不确定我是否正确理解您的第二个问题。 CanExecuteChanged事件用于通知UI某些已更改的内容会影响命令是否可以执行。 我不知道您涉及的代码或有关ConfigurationManager的示例,但是通常会删除并添加事件处理程序,以便断言事件处理程序仅注册一次。 如果您多次注册一个事件处理程序,那么它将被多次调用-一种人们很少想要的行为。 因此,可以在重新注册事件处理程序之前将其删除。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.