Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Silverlight 数据网格&x2B;ContextMenu:如何获取右键单击下的行_Silverlight_Datagrid_Contextmenu_Silverlight 5.0 - Fatal编程技术网

Silverlight 数据网格&x2B;ContextMenu:如何获取右键单击下的行

Silverlight 数据网格&x2B;ContextMenu:如何获取右键单击下的行,silverlight,datagrid,contextmenu,silverlight-5.0,Silverlight,Datagrid,Contextmenu,Silverlight 5.0,在Silverlight 5中,我有一个带有ContextMenuService.ContextMenu的DataGrid。如果单击要选择的行,然后单击鼠标右键,只需检查grid.selecteditem的上下文即可。但是,如果在未选择行的情况下右键单击该行,则在菜单打开时没有该行的上下文如何获取在上下文菜单打开时右键单击的网格的DataContext行?在网格上单击鼠标右键似乎是一个选项,但它被上下文菜单截取,除非上下文菜单已打开/处于焦点,否则不会触发 我已经找到了很多关于使用Silverl

在Silverlight 5中,我有一个带有
ContextMenuService.ContextMenu
DataGrid
。如果单击要选择的行,然后单击鼠标右键,只需检查grid.selecteditem的上下文即可。但是,如果在未选择行的情况下右键单击该行,则在菜单打开时没有该行的上下文如何获取在上下文菜单打开时右键单击的网格的
DataContext
行?
在网格上单击鼠标右键似乎是一个选项,但它被上下文菜单截取,除非上下文菜单已打开/处于焦点,否则不会触发


我已经找到了很多关于使用Silverlight 4绕过原始问题并通过右键单击检测rown的示例。但是,contextmenu现在会截取网格的右键单击,因此那些没有logner的功能将无法工作。我还发现了一些关于“bugs”的帖子,这些帖子最初是通过上下文菜单来放松的。所有这些帖子/博客都让我们很难找到最新的答案或解决方案。

是的,Silverlight 5似乎改变了一些打破旧把戏的东西

我们一直在这样做:在行加载处理程序中添加行输入。例如:

private void DataGrid_LoadingRow(object sender, DataGridRowEventArgs e)
{
        e.Row.MouseEnter += new MouseEventHandler(Row_MouseEnter);
        e.Row.MouseLeave += new MouseEventHandler(Row_MouseLeave);
}


void Row_MouseEnter(object sender, MouseEventArgs e)
{
        DataGridRow dgr = sender as DataGridRow;
        IncidentGrid.SelectedItem = dgr.DataContext;
}

我知道这很难看,但它正在工作。

除了罗杰对准确性的担心之外,我不想在每一行上都连接这些事件,因为我的网格相当大,我必须保持精简

我在这里找到了解决办法


仅将一个事件处理程序应用于网格的MouseRightButtonDown事件。事件args具有鼠标位置,您可以使用VisualTreeHelper查找鼠标所在的DataGridRow。然后该行的DataContext将具有SelectedItem。

。。。还没有工作。现在,如果grid.selectedItem为空,我会提示用户选择一行。另外,在上下文菜单完成它的工作后,我取消选择当前的grid.selected项。是的,也使用了它,但我害怕完全信任它。我担心的是,对于这个应用。。如果用户对某一行执行操作(右键单击),并且这有任何方法不触发鼠标输入事件,这将非常糟糕。我投了赞成票,但仍然希望有更好的解决办法。谢谢