2011-10-13 1 views
0

현재 구현에서는 탭과 격자를 동적으로 생성합니다.C# WPF 여러 개의 두 번 클릭 이벤트를 처리하고 단일 처리기를 통해 동적으로 데이터 격자를 생성합니다.

기본적으로 새 그리드는 이전 그리드의 임의의 행을 두 번 클릭하여 작성해야하고 다른 증명을 위해 행 데이터를 사용해야합니다.

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

그리드 외의 모든 더블 클릭을 처리합니다. 그리드 전용이 아닙니다.

특정 그리드에 행 값을 반환 할 수있는 핸들러를 찾아야합니다. 이 문제를 해결할 수있는 방법이나 쉬운 방법을 제안하십시오.

감사합니다.

답변

1

DataGrid의 DataGrid 행에서 두 번 클릭 된 라우트 된 이벤트를 처리합니다. 코드 숨김

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

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

보너스 cellContentElement 이중 행에 클릭 된 셀의 내용 요소이다 예 ... DataGridTextColumn의 경우 셀에 TextBlock이됩니다.

관련 문제