为 RadGridView 的行增加点击事件
Thu, Oct 23, 2014Telerik 的 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 等控件也可以用这种方法处理。
参考资料:
[2] How to capture a mouse click on an Item in a ListBox in WPF?