我正在使用DataGridCell.Slected在我的代码后面做一些事情。
<DataGrid DataGridCell.Selected="ArticlesGrid_OnSelected>
在我的代码背后,我有一个类似
的方法private void ArticlesGrid_OnSelected(object sender, RoutedEventArgs e)
{
....
}
但是我想使用行为,而我不知道如何在行为中附加事件。
public class MyBehavior : Behavior<DataGrid>
{
protected override void OnAttached()
{
//don't know how to attach to the event
}
protected override void OnDetaching()
{
}
}
为了测试我在OnAttached方法中使用了这段代码。
EventManager.RegisterClassHandler(AssociatedType, DataGridCell.SelectedEvent, new RoutedEventHandler(ArticlesGrid_OnSelected));
但我不知道如何在我的OnDetaching方法中删除此事件处理程序。
答案 0 :(得分:0)
您可以在AssociatedObject属性中获取行为的目标。所以你可以这样做:
public class MyBehavior : Behavior<DataGrid>
{
protected override void OnAttached()
{
AssociatedObject.SelectionChanged += MyEventHandler;
}
protected override void OnDetaching()
{
AssociatedObject.SelectionChanged -= MyEventHandler;
}
protected void MyEventHandler(object sender, SelectionChangedEventArgs e) {
// Do stuff
}
}
的Xaml
<DataGrid>
<i:Interaction.Behaviors>
<local:MyBehavior/>
</i:Interaction.Behaviors>
</DataGrid>