我有两个数据网格在后面的代码中定义了相同的属性。
var dtg = new DataGrid();
然后我通过lambda表达式分配一个事件(相当长的一个):
dtg.LoadingRow += (object sender, DataGridRowEventArgs e) =>
{
...
};
我不想复制。 那我怎么能这样做(伪代码):
var dtg2 = new DataGrid();
dtg2.LoadingRow = dtg.LoadingRow;
感谢名单
答案 0 :(得分:2)
只需将lambda分配给变量:
EventHandler<DataGridRowEventArgs> handler = (object sender, DataGridRowEventArgs e) =>
{
...
};
var dtg2 = new DataGrid();
dtg2.LoadingRow += handler;
或者,更好的是,命名您的处理程序 - 将其设置为类中的普通方法并使用其名称。
答案 1 :(得分:2)
为什么不用事件处理程序替换lambda表达式,即方法?:
private void OnLoadingRow(object sender, DataGridRowEventArgs e)
{
//....
}
然后,您可以为多个DataGrid使用相同的事件处理程序:
dtg.LoadingRow += OnLoadingRow;
dtg2.LoadingRow += OnLoadingRow;
另一个选择是将整个lamda定义为@Rafal建议的变量或字段,但我不能真正理解为什么这比添加方法更好 - 至少在一般情况下是这样。