WPF中的一些控件的事件可以绑定Command,只要引用System.Windows.Interactivity.dll即可,代码如下,但若缺少此dll也可以使用其他方案替代实现:
DataGrid控件CellEditEnding事件绑定Command
<i:Interaction.Triggers>
<i:EventTrigger EventName="CellEditEnding">
<i:InvokeCommandAction Command="{Binding ModifiyCommand}" />
</i:EventTrigger>
</i:Interaction.Triggers>
可以改用附加属性AttachProperty来替代实现
public class ElementAttachProperty
{
public static ICommand GetCellEditEndingCommand(DependencyObject obj)
{
return (ICommand)obj.GetValue(CellEditEndingCommandProperty);
}
public static void SetCellEditEndingCommand(DependencyObject obj, ICommand value)
{
obj.SetValue(CellEditEndingCommandProperty, value);
}
public static readonly DependencyProperty CellEditEndingCommandProperty =
DependencyProperty.RegisterAttached("CellEditEndingCommand", typeof(ICommand), typeof(ElementAttachProperty), new PropertyMetadata(OnCellEditEndingCommand));
private static void OnCellEditEndingCommand(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var element = d as DataGrid;
element.CellEditEnding += Element_CellEditEnding;
}
private static void Element_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
{
var element = sender as FrameworkElement;
var command = (ICommand)element.GetValue(CellEditEndingCommandProperty);
command?.Execute("");
}
}
具体使用:
<DataGrid att:ElementAttachProperty.CellEditEndingCommand="{Binding ModifiyCommand}" />