1
我为DataGrid创建了一个扩展。我想知道在事件中做什么更好的方法。在控件扩展中,覆盖或addHandler?
是更好地增加一个处理程序是这样的:
class MyDataGrid : DataGrid {
public MyDataGrid() {
this.PreviewKeyDown+= MyDataGrid_PreviewKeyDown;
}
protected void MyDataGrid_PreviewKeyDown(/* args */) {/* do stuff */}
}
或与这样的控制装置:
class MyDataGrid : DataGrid {
public MyDataGrid() { }
protected override void OnPreviewKeyDown(/* args */) {/* do stuff */}
}
如果我让base.OnPreviewKeyDown(e);
的覆盖,它做的一样事件处理程序?
如果您从重写的方法调用基方法,则两者都是等效的。 – 2014-11-14 19:27:40
第二个片段更好。它迫使你思考一个你还没有想过的细节。你在“做什么”之前调用base.OnPreviewKeyDown()?或之后?还是根本不?现在你不知道的可能性很大,因为你还没有想过。它很重要。事件的问题是,如果事实证明它确实重要,则无法解决问题。 – 2014-11-14 19:44:25