-->

自定义数据网格事件不触发(Custom Datagrid Event not firing)

2019-10-23 06:54发布

我有2个扩展工具包Datagrids中绑定到2个名为帐户和历史观察集合的窗口。 我想历史的单元格编辑结束事件绑定DataGrid的命令在我的视图模型,这样我可以,除其他事项外,更新帐户可观察到的集合中的值,并把它反映在视图。

为了测试一切可以工作,我用下面的事件:

<i:Interaction.Triggers>
    <i:EventTrigger EventName="SelectionChanged">
       <cmd:EventToCommand Command="{Binding MyCmd}"/>
    </i:EventTrigger>
 </i:Interaction.Triggers>

这在视图模型成功地引发了命令,由观察集合在一个静态的变化和更新视图。 所以,一切都很好。

如果我改变了EventNameCellEditEnded或到目前为止一切可能的变化我能想到的; 什么都没发生。

所以,我应该用什么事件名称来捕获端扩展工具包的WPF的事件的单元格编辑DataGrid ? 任何帮助将是巨大的,我不知道在哪里,从这里走。

编辑:

我发现这个职位使用一个单独的类,以提高该建议CellEditEnded事件。 但我想不通,我应该如何提高自定义事件。 任何一个可以解释这个应该怎么使用呢? 使用CellEditEnded在EventTrigger事件按后仍然无法正常工作。

public class MyDataGridControl : DataGridControl
{
    public MyDataGridControl()
    {
        this.AddHandler( Cell.EditEndedEvent, new RoutedEventHandler( MyDataGridControl.OnCellEditEnded ) );
    }

    public event RoutedEventHandler CellEditEnded;

    private void RaiseCellEditEnded( RoutedEventArgs e )
    {
        var handler = this.CellEditEnded;
        if( handler == null )
            return;

       handler.Invoke( this, e );
   }

   private static void OnCellEditEnded( object sender, RoutedEventArgs e )
   {
       var dataGrid = ( MyDataGridControl )sender;
       Debug.Assert( dataGrid != null );

       dataGrid.RaiseCellEditEnded( e );
   }
}

编辑2:

现在我发现这个网站它看起来很有希望。 我适应代码到下面和上面的类不执行,但CellEditEnded事件仍然不火。

private void HistoryDataGrid_EditEnded(object sender, RoutedEventArgs e)
{
    MyDataGridControl mydatagridcontrol = new MyDataGridControl();
    mydatagridcontrol.CellEditEnded += new RoutedEventHandler(mydatagridcontrol_CellEditEnded);            
    mydatagridcontrol.RaiseEvent(e);
}
void mydatagridcontrol_CellEditEnded(object sender, RoutedEventArgs e)
{

}

我觉得好像应该有东西在void mydatagridcontrol_CellEditEnded一部分,但我不知道我会放在那里。

任何帮助将真正理解。

谢谢!

文章来源: Custom Datagrid Event not firing