如何在WPF Datagrid上安装MouseUp和MouseDoubleClick事件

时间:2010-11-15 01:09:29

标签: wpf datagrid mvvm-light

这是问题所在。我在WPF项目上使用MVVM并使用MVVM灯。我在用户控件中有一个网格,用于返回搜索结果。我希望用户能够点击网格并让行可供父视图使用(从菜单中),并让用户双击该行并在新的“窗口”中打开。我个人有这些项目正常工作,但我不能两个都工作。我试图将1个命令绑定到MouseUp,另一个命令绑定到MouseDoubleClick,但MouseDoubleClick事件永远不会被触发。如何在MVVM设置中使用mouseUp和MouseDoubleClick事件?或任何其他建议,以便能够从数据网格中选择一行可用于菜单项并能够双击。

3 个答案:

答案 0 :(得分:1)

使用MVVMLight,eventtocommand将为您提供selectionchanged和moused双击事件。

答案 1 :(得分:0)

我认为您将不得不手动检测双击。

dblClickTimeOut = null;
row.onmouseup = function() {
    if( dblClickTimeOut == null)
        dblClickTimeOut = setTimeout("dblClickTimeOut = null; selectRow('"+this.id+"');",200);
    else {
        // double-click stuff
    }
}
selectRow = function() {
    // single-click stuff
}

答案 2 :(得分:0)

对于喜欢短途的人(也是mvvm友好的!), 在xaml-class中定义交互性:

xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"

在你的网格中:

<Grid>
  <Grid.InputBindings>
     <MouseBinding MouseAction="LeftDoubleClick" Command="{Binding ElementName=xyz, Path=DataContext.MouseDoubleClick}"/>
  </Grid.InputBindings>
  <i:EventTrigger EventName="MouseUp">
     <cmd:EventToCommand Command="{Binding ElementName=xyz, Path=DataContext.MouseUpEvent}"/>
  </i:EventTrigger>
</Grid>

希望有所帮助。