为 RadGridView 的行增加点击事件

Telerik 的 RadGridView 本身有一个 SelectionChanged 事件,可以处理行的选择改变操作。但是已经选中了的行再次点击时并不会触发这个事件,因此有必要为 RadGridView 的行增加点击事件。考虑在 RadGridView 的 RowLoaded 事件里实现以下代码:

private void RadGridView_RowLoaded(object sender, RowLoadedEventArgs e)
{
    var row = e.Row as GridViewRow;
    if (row != null)
    {
        // 防止事件处理程序被触发多次
        row.RemoveHandler(UIElement.MouseLeftButtonDownEvent, 
            new MouseButtonEventHandler(GridViewRow_MouseLeftButtonDown));
        row.AddHandler(UIElement.MouseLeftButtonDownEvent,
            new MouseButtonEventHandler(GridViewRow_MouseLeftButtonDown), true);
    }
}

// 处理选中行的 MouseLeftButtonDown 事件
private void GridViewRow_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    var row = sender as GridViewRow;
    if (row != null)
    {
        // 执行的操作…
    }
}

其他如 ListBox、DataGrid 等控件也可以用这种方法处理。

参考资料:

[1] RadGridView - click event

[2] How to capture a mouse click on an Item in a ListBox in WPF?

Comments

comments powered by Disqus