您的位置:首页 > 其它

silverlight MouseLeftButtonDown事件无法触发

2012-11-09 23:27 489 查看
在给一个GridView控件添加MouseLeftButtonDown和MouseRightButtonDown事件时,MouseLeftButtonDown事件触发触发不了。

参考:/article/4809568.html

原因如下:

  控件在捕获了MouseLeftButtonDown事件后,会将该事件的“Handled”设置为“True”。而在在事件路由中,当某个控件得到一个RoutedEvent,会检测Handled属性,当Handled属性为True时,则忽略该事件。

解决办法:

用UIElement.AddHandler 方法 (RoutedEvent, Delegate, Boolean) 。该方法中有一参数handledEventsToo ,类型System.Boolean,如果该参数为True,即使路由事件在其事件数据中标记为已处理(Handled 为 True),也会调用事件处理程序。如果为False,标记为已处理(Handled 为 True),不会再调用事件处理程序,默认为False。

     private void grdCamera_RowLoaded(object sender, RowLoadedEventArgs e)
{
GridViewRowItem rowItem = e.Row as GridViewRowItem;
if (rowItem != null)
{
//给Grid的行绑定右键单击事件
rowItem.MouseRightButtonDown += new MouseButtonEventHandler((ss, ee) =>
{
GridViewRowItem item = ss as GridViewRowItem;
if (item != null && item.Item != null)
{
//选中当前行
item.IsSelected = true;
}
});
//给Grid的行绑定左击键单击事件
rowItem.AddHandler(GridViewRowItem.MouseLeftButtonDownEvent, new MouseButtonEventHandler(this.rowItem_MouseLeftButtonDown), true);
}
}

void rowItem_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
GridViewRowItem item = sender as GridViewRowItem;
if (item != null && item.Item != null)
{
//empty
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: