2014-04-01 26 views
24

Tôi cần lập trình tạo DataGrid và cần thêm sự kiện hàng nhấp đúp vào nó. Làm thế nào được thực hiện trong C#? Tôi đã tìm thấy cái này;WPF DataGrid hàng nhấp đúp vào sự kiện lập trình

myRow.MouseDoubleClick += new RoutedEventHandler(Row_DoubleClick); 

Mặc dù điều này không có tác dụng với tôi vì tôi ràng buộc DataGrid.ItemsSource vào bộ sưu tập và không thêm hàng theo cách thủ công.

+4

Nó sẽ không thể dễ dàng nhất để đăng ký cho 'myGrid .MouseDoubleClick' và sau đó trong xử lý sự kiện kiểm tra nếu nhấp chuột xảy ra trên một hàng (hoặc ro w được chọn)? – floele

Trả lời

53

Bạn có thể làm điều đó trong XAML bằng cách thêm phong cách mặc định cho DataGridRow dưới phần tài nguyên của mình và tuyên bố sự kiện setter đằng kia:

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

HOẶC

Trong trường hợp muốn làm điều đó trong mã ẩn. Đặt x:Name trên lưới, tạo kiểu theo chương trình và đặt kiểu là RowStyle.

<DataGrid x:Name="dataGrid"/> 

và trong mã đằng sau:

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

Có ví dụ về xử lý sự kiện:

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

Điều này không hoạt động (.NET Framework phiên bản 4.5) – pongapundit

+0

@pongapundit Nó hoạt động rất tốt với .NET 4.5 – SBF

+0

Cảm ơn, tôi sẽ thử lại. – pongapundit

Các vấn đề liên quan