2016-01-19 1 views
0

У меня есть datagrid, где первый столбец является постоянным для всех строк. Я хотел бы следующее поведение:Вызвать действие для ячейки Datagrid независимо от действия Row

  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> 

Point (1.) отлично работает, но (2) не вызывает действие.

Я пропустил пункт здесь?

ответ

0

На всякий случай у кого-то был бы похожий вопрос: я еще не нашел то, что хочу! но есть работа с использованием кода. Это работает для меня следующим образом:

<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.

Если кто-нибудь предоставит ответ, используя привязку, я был бы признателен.