独立于 Row 操作为 Datagrid 单元格调用操作

Invoke an action for a Datagrid cell independent from Row action

我有一个 datagrid,其中所有行的第一列都是常量。 我想要以下行为:

  1. 当用户双击该行的任何单元格(不包括第一个单元格)时,调用 action A 知道选择了哪一行。这是基于事件的(触发事件)。
  2. 当用户双击任何行的第一个单元格时,调用 action B 知道选择了哪一行。

为此,我编写了以下代码:

<DataGrid x:Name="dataGrid" ItemsSource="{Binding source}" MouseDoubleClick="doubleClick">
    <DataGrid.Columns>
        <DataGridTemplateColumn>
             <DataGridTemplateColumn.CellTemplate>
                 <DataTemplate>
                     <TextBlock Text="♣" Foreground="{Binding Path=color}"/>
                 </DataTemplate>
             </DataGridTemplateColumn.CellTemplate>
             <i:Interaction.Triggers>
                 <i:EventTrigger EventName="MouseDoubleClick">
                     <i:InvokeCommandAction Command="{Binding FirstCellCommand}" CommandParameter="{Binding SelectedItem, ElementName=dataGrid}"/>
                 </i:EventTrigger>
             </i:Interaction.Triggers>
         </DataGridTemplateColumn>
         <DataGridTextColumn Header="Label" Binding="{Binding label, UpdateSourceTrigger=PropertyChanged}"/>
     </DataGrid.Columns>
</DataGrid>

点 (1.) 工作正常,但 (2.) 没有触发动作。

我漏掉了什么吗?

以防万一有人有类似的问题:我还没有找到我想要的东西!但是可以使用 code-behind 来解决。 它对我有用如下:

<DataGrid x:Name="dataGrid" ItemsSource="{Binding source}" MouseDoubleClick="doubleClick">
        <DataGrid.Columns>
            <DataGridTemplateColumn>
                 <DataGridTemplateColumn.CellTemplate>
                     <DataTemplate>
                         <TextBlock Text="♣" Foreground="{Binding Path=color}" MouseDown="this_MouseDown"/>
                     </DataTemplate>
                 </DataGridTemplateColumn.CellTemplate>
             </DataGridTemplateColumn>
             <DataGridTextColumn Header="Label" Binding="{Binding label, UpdateSourceTrigger=PropertyChanged}"/>
         </DataGrid.Columns>
    </DataGrid>

我删除了 Interaction.Triggers 并将 MouseDown 添加到 TextBlock

如果有人使用绑定提供答案,我将不胜感激。