none
Как получить значение ячейки из DataGrid? RRS feed

  • Общие обсуждения

  • DataGrid является наследником ItemsControl, поэтому он имеет свойство Items и ItemContainer, который является оберткой для элемента. DataGrid отличается от DataGridView в Windows Forms, DataGridRow – это элемент коллекции Items, каждая строка содержит одну ячейку каждого столбца, эта ячейка обернута в DataGridCellsPresenter , и предоставляет одно значение. Поэтому нельзя получить доступ к содержимому ячейки, как в winforms (DataGridView .Rows .Cells ).

    Вы можете получить доступ к содержимому ячейки через VisualTree, который может получить из DataGridRow DataGridCellPresenter и получить экземпляр ячейки из DataGridCellPresenter .

    DataGridRow rowContainer = (DataGridRow)dataGrid1.ItemContainerGenerator.ContainerFromIndex(rowIndex); 
    DataGridCellsPresenter presenter = GetVisualChild(rowContainer); 
    DataGridCell cell = (DataGridCell)presenter.ItemContainerGenerator.ContainerFromIndex(columnIndex); 
    
    public static T GetVisualChild<T>(Visual parent) where T : Visual 
    { 
     T child = default(T); 
     int numVisuals = VisualTreeHelper.GetChildrenCount(parent); 
    
     for (int i = 0; i < numVisuals; i++) 
     { 
      Visual v = (Visual)VisualTreeHelper.GetChild(parent, i); 
      child = v as T; 
      
      if (child == null) 
       child = GetVisualChild(v); 
      else
       break; 
     } 
    
     return child; 
    }
    
    


    Для связи [mail]
    14 декабря 2010 г. 10:36

Все ответы