2016-09-08 15 views
0

私はWPF DataGridを持っています。クリックするだけで、DataGridのすべてのセルを編集できます。
ダブルクリックで新しいウィンドウを開くこともできます。WPF DataGrid CellEditingTemplateのダブルクリックイベント

ダブルクリックイベントのような通常のDataGridTextColumnのために働くことをこの

<DataGridTextColumn Binding="{Binding Path=Name}" > 
    <DataGridTextColumn.EditingElementStyle> 
     <Style TargetType="TextBox"> 
      <EventSetter Event="MouseDoubleClick" Handler="CellEditDoubleClick"/> 
     </Style> 
    </DataGridTextColumn.EditingElementStyle> 
</DataGridTextColumn> 

しかし、私はテキストボックスの編集モードにいるときに、このようなテンプレートを使用してそれを行う方法:現在

<DataGridTemplateColumn Header="Weight"> 
    <DataGridTemplateColumn.CellTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding Path=Weight}" /> 
     </DataTemplate> 
    </DataGridTemplateColumn.CellTemplate> 
    <DataGridTemplateColumn.CellEditingTemplate> 
     <DataTemplate> 
      <TextBox x:Name="WeightEditTextBox" Text="{Binding Path=Weight}" > 
       <i:Interaction.Behaviors>      
        <helper:TextBoxInputRegExBehaviour RegularExpression="^\d+\,?\d*$" /> 
       </i:Interaction.Behaviors> 
      </TextBox> 
     </DataTemplate> 
    </DataGridTemplateColumn.CellEditingTemplate> 
</DataGridTemplateColumn> 

編集モードのときにダブルクリックが発生します。
パーフェクトは、DataGridのすべての単一の列に追加する必要のない完全なDataGridで機能するソリューションになります。

+0

DataGridには、MouseDoubleClickイベントがあります。それを使ってみましたか? –

+0

はい、TextBoxセルの編集モードでは起動しません。 –

答えて

1

私はTextBoxの "MouseDoubleClick"イベントハンドラを追加するとうまくいくと思います。それはテンプレートにさえあります。

<DataGridTemplateColumn.CellEditingTemplate> 
       <DataTemplate> 
        <TextBox x:Name="WeightEditTextBox" Text="{Binding Path=Weight}" MouseDoubleClick="WeightEditTextBox_MouseDoubleClick"> 
         <i:Interaction.Behaviors> 

         </i:Interaction.Behaviors> 
        </TextBox> 
       </DataTemplate> 
      </DataGridTemplateColumn.CellEditingTemplate>