自定义数据网格事件未触发

时间:2015-06-05 14:11:53

标签: c# wpf mvvm datagrid eventtrigger

我在一个名为Accounts and History的2个可观察集合的窗口中有2个Extended Toolkit Datagrids。我想将历史DataGrid的单元格编辑结束事件绑定到我的视图模型中的命令,以便除其他外,我可以更新Accounts observable集合中的值并将其反映在视图中。

为了测试一切都可行,我使用了下面的事件:

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

这成功触发了视图模型中的命令,在可观察集合中进行了静态更改并更新了视图。所以一切都很好。

如果我将EventName更改为CellEditEnded或者到目前为止我可以想到的每种可能的变化;没有任何反应。

那么,我应该使用什么事件名来捕获WPF扩展工具包DataGrid的Cell Edit Ended事件?任何帮助都会很棒,我不知道从哪里开始。

编辑:

我发现this post建议使用单独的类来引发CellEditEnded事件。但是我无法弄清楚我应该如何提升自定义事件。任何人都可以解释如何使用它吗?根据帖子在EventTrigger中使用CellEditEnded事件仍然无效。

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:

我现在发现this site看起来很有希望。我将代码调整到下面,上面的类确实执行了,但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部分应该有什么东西,但我不知道我会把它放在那里。

真的很感激任何帮助。

谢谢!

0 个答案:

没有答案