Only Mookrs

A fugitive from the world.

为 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