我在一个名为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
部分应该有什么东西,但我不知道我会把它放在那里。
真的很感激任何帮助。
谢谢!