我正在尝试从另一个事件中调用OnCellEditEnding
事件,
private void BillsTableRecords_OnCellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
{
// do stuff here
}
我的问题是我不知道如何将DataGridCellEditEndingEventArgs
传递给方法,即下面方法中的e
显然会出错,因为它引用了RoutedEventArgs
不是DataGridCellEditEndingEventArgs
。
private void BillsRecordsCheckBox_OnChecked(object sender, RoutedEventArgs e)
{
BillsTableRecords_OnCellEditEnding(sender, e);
}
那么如何从DataGridCellEditEndingEventArgs
获取值以便我可以传递方法中的值?请注意,此时要选择DataGrid
单元格,因此它将包含一个值。
答案 0 :(得分:1)
试试
private void BillsRecordsCheckBox_OnChecked(object sender, RoutedEventArgs e)
{
BillsTableRecords_OnCellEditEnding(sender, new DataGridCellEditEndingEventArg());
}
如果您想保留RoutedEventArgs
中的参数,请将它们添加到DataGridCellEditEndingEventArg
答案 1 :(得分:1)
我不推荐这种方法。事件处理程序将由事件调用;他们的签名并不适合独立通话。如果您在事件处理程序中执行业务代码,那么它也不是一个好的设计,因为您的事件处理程序是UI代码,应该与业务代码分开。
这里最好的方法是创建一个专门的方法来执行您想要的操作并从两个事件处理程序中调用它:
private void DoStuff(/* add the parameters you need*/) {
//do stuff
}
private void BillsTableRecords_OnCellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
{
DoStuff();
}
private void BillsRecordsCheckBox_OnChecked(object sender, RoutedEventArgs e)
{
DoStuff();
}