2011-10-13 9 views
0

現在の実装では、タブとグリッドを動的に生成します。C#WPF複数のダブルクリックイベントを処理する、単一のハンドラで動的にデータグリッドを生成する

基本的に、前のグリッドの任意の行をダブルクリックして新しいグリッドを作成し、その行データを他の証明に使用する必要があります。

this.AddHandler(DataGrid.MouseDoubleClickEvent, new RoutedEventHandler (Generic_DoubleClick));  

グリッド外であっても、グリッド専用ではないダブルクリックに対しても処理されます。

グリッドに特定の行の値を返すハンドラを見つける必要があります。これを回避する方法または簡単な方法を提案してください。

ありがとうございました。

答えて

1

DataGridのDataGrid行からダブルクリックルーティングされたイベントを処理します。

private void DataGridRow_MouseDoubleClick(
      object sender, MouseButtonEventArgs e) 
    { 
     var dgRow = sender as Microsoft.Windows.Controls.DataGridRow; 
     var cellContentElement = e.OriginalSource as UIElement; 
    } 

コードビハインドで

<tk:DataGrid> 
     <tk:DataGrid.Resources> 
      <Style TargetType="{x:Type tk:DataGridRow}"> 
       <EventSetter Event="MouseDoubleClick" 
          Handler="DataGridRow_MouseDoubleClick"/> 
      </Style> 
     </tk:DataGrid.Resources> 
     <tk:DataGrid.ItemsSource> 
      <x:Array Type="{x:Type TextBlock}"> 
       <TextBlock Text="1" Tag="1.1"/> 
       <TextBlock Text="2" Tag="1.2"/> 
       <TextBlock Text="3" Tag="1.3"/> 
       <TextBlock Text="4" Tag="1.4"/> 
      </x:Array> 
     </tk:DataGrid.ItemsSource> 
     <tk:DataGrid.Columns> 
      <tk:DataGridTextColumn Header="Text" Binding="{Binding Text}"/> 
      <tk:DataGridTextColumn Header="Tag" Binding="{Binding Tag}"/> 
     </tk:DataGrid.Columns> 
    </tk:DataGrid> 

ボーナスcellContentElementある例えば...複列にクリックされたセルのコンテンツ要素でありますDataGridTextColumnの場合、セル内にはTextBlockになります。

関連する問題