2014-04-01 13 views
24

Programlı bir DataGrid oluşturmanız gerekir ve bunun için çift tıklama satırı olayı eklemeniz gerekir. Bu C# nasıl yapılır? Bunu buldum; Bir koleksiyona DataGrid.ItemsSource bağlama ve manuel sıralar halinde ekleyerek değilim çünkü bu olsa WPF DataGrid satır çift tıklama olayı program aracılığıyla

myRow.MouseDoubleClick += new RoutedEventHandler(Row_DoubleClick); 

benim için çalışmaz.

+4

o MyGrid 'abone olmak kolay olmaz:

Style rowStyle = new Style(typeof(DataGridRow)); rowStyle.Setters.Add(new EventSetter(DataGridRow.MouseDoubleClickEvent, new MouseButtonEventHandler(Row_DoubleClick))); dataGrid.RowStyle = rowStyle; 

VE

olay işleyicisi örneği yoktur .MouseDoubleClick' ve sonra olay işleyicide, tıklamanın bir satırda gerçekleşip gerçekleşmediğini kontrol edin (ya da w seçilir)? – floele

cevap

53

Bunu kaynakları bölümü altında DataGridRow için varsayılan stili ekleyerek XAML bunu ve orada olay ayarlayıcı ilan edebilir:

<DataGrid> 
    <DataGrid.Resources> 
     <Style TargetType="DataGridRow"> 
      <EventSetter Event="MouseDoubleClick" Handler="Row_DoubleClick"/> 
     </Style> 
    </DataGrid.Resources> 
</DataGrid> 

VEYA

durumda bunu yapmak istiyorum arkasındaki kod. Izgarada x:Name'u ayarlayın, stili programatik olarak oluşturun ve stili RowStyle olarak ayarlayın.

<DataGrid x:Name="dataGrid"/> 

ve arkasında kod

:

private void Row_DoubleClick(object sender, MouseButtonEventArgs e) 
    { 
    DataGridRow row = sender as DataGridRow; 
    // Some operations with this row 
    } 
+0

Bu işe yaramıyor (.NET Framework sürüm 4.5) – pongapundit

+0

@pongapundit .NET 4.5 – SBF

+0

ile çok iyi çalışıyor Teşekkürler, tekrar deneyeceğim. – pongapundit