[英]WPF How to assign the same event lambda expression to two different elements
I have two datagrids with same properties defined in code behind. 我有两个具有在后面的代码中定义的相同属性的数据网格。
var dtg = new DataGrid();
then I assign an event though lambda expression (quite a long one): 然后我通过lambda表达式分配一个事件(相当长):
dtg.LoadingRow += (object sender, DataGridRowEventArgs e) =>
{
...
};
which I do not want to replicate. 我不想重复。 So how can I do that (pseudocode):
那么我该怎么做(伪代码):
var dtg2 = new DataGrid();
dtg2.LoadingRow = dtg.LoadingRow;
thanx 谢谢
simply assign your lambda to variable: 只需将您的lambda分配给变量:
EventHandler<DataGridRowEventArgs> handler = (object sender, DataGridRowEventArgs e) =>
{
...
};
var dtg2 = new DataGrid();
dtg2.LoadingRow += handler;
Or, better, name your handler - make it to an ordinary method in your class and use its name. 或者,更好地命名您的处理程序-使它成为类中的普通方法并使用其名称。
Why don't you just replace the lambda expression with an event handler, ie a method?: 您为什么不只用事件处理程序(即方法)替换lambda表达式?:
private void OnLoadingRow(object sender, DataGridRowEventArgs e)
{
//....
}
You could then use the same event handler for several DataGrid's: 然后,您可以对多个DataGrid使用相同的事件处理程序:
dtg.LoadingRow += OnLoadingRow;
dtg2.LoadingRow += OnLoadingRow;
The other option is to define your entire lamda as a variable or field as suggested by @Rafal but I can't really see why this would be better than adding a method - at least in the general case. 另一个选择是按照@Rafal的建议将整个lamda定义为变量或字段,但我真的看不出为什么这比添加方法更好-至少在一般情况下。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.