如何检测 MudBlazor 中表格行的双击?

Jan*_*Jan 4 c# asp.net blazor mudblazor

我正在使用 MudBlazor,我想检测单个表行上的双击并对事件做出反应。但是,表的API中并没有列出双击。单击回调很容易完成OnRowClick(另请参阅此处的 SO)。没有与双击等效的功能。

ondblclick我尝试使用 Blazor 事件

<MudTd @ondblclick="OnOrderDbClicked">
    // ...
<MudTd/>
Run Code Online (Sandbox Code Playgroud)

我对此有两个问题:

  1. 我可以抓住双击。但我无法让它知道被单击的行(对此我有一个解决方法)。
  2. 另外,我必须添加到每个单元格,因为该<RowTemplate/>元素不会接受它。

我只有解决问题 1 的拐杖:将变量绑定MyOrderVM MyItemSelectedItem表的 item 参数,并在双击调用的方法中访问对象(因为双击也会导致两次单击来选择该项目)。

我没有做过很多测试,但似乎这可以工作,但是没有更好的解决方案吗?还是我太担心副作用?

Jus*_*nno 9

正如您所说,目前没有像 OnRowClick 这样的开箱即用的双击方式。但是,请随意在 repo 中创建问题。

作为解决方法,您可以使用方法 1 并进行一些调整来停止将单击事件传播到 MudTable。我觉得这种方式比绕路更容易理解SelectedItem

<MudTd>
  // the click is handled by the div and not bubbling up to the MudTd
  <div @onclick="@EmptyCallback" @onclick:stopPropagation="true" 
              @ondblclick="@( (x) => DoSomething(context))" >
     // ...
  </div>
<MudTd/>
Run Code Online (Sandbox Code Playgroud)

这是一个MudBlazor Playground来展示它。

免责声明:

我是 MudBlazor 的贡献者


小智 9

更新:
\n对于在搜索中发现此内容的人来说,MudBlazor 现在确实有一个双击指示器。

\n它不是一个显式参数,而是参数的一部分OnRowClick。\n在TableRowClickEventArgsit 提供程序中,有一个属性MouseEventArgs具有 property Detail。该属性的文档说明:\n
\n

短时间内发生的连续点击次数,递增 1。

\n
\n

因此,通过将其与 2 进行比较,您可以对双击做出反应。我\xc2\xb4已经在我自己的应用程序中使用了它,并且可以确认它是否有效。

\n