2011-02-22 11 views

答えて

1

Visible DataGridRowの意味がわかりませんが、現時点ではVisual Treeでそれらを見つけることによってすべてDataGridRowが生成されます。これは基本的にあなたのためDataGrid

private List<DataGridRow> GetDataGridRows(DataGrid dataGrid) 
{ 
    return GetVisualChildCollection<DataGridRow>(c_dataGrid);    
} 

GetVisualChildCollection

public static List<T> GetVisualChildCollection<T>(object parent) where T : FrameworkElement 
{ 
    List<T> visualCollection = new List<T>(); 
    GetVisualChildCollection(parent as DependencyObject, visualCollection); 
    return visualCollection; 
} 
private static void GetVisualChildCollection<T>(DependencyObject parent, List<T> visualCollection) where T : FrameworkElement 
{ 
    int count = VisualTreeHelper.GetChildrenCount(parent); 
    for (int i = 0; i < count; i++) 
    { 
     DependencyObject child = VisualTreeHelper.GetChild(parent, i); 
     if (child is T) 
     { 
      visualCollection.Add(child as T); 
     } 
     else if (child != null) 
     { 
      GetVisualChildCollection(child, visualCollection); 
     } 
    } 
} 
+0

visible = "現在の瞬間に画面に表示されます" – user626528

0

私は」のように使用仮想化のすべての可視DataGridRow sであり、おそらくいくつかのより多くを与えるだろうDataGridのLoadingRowイベントとUnloadingRowイベントに接続するだけです。

ここ

HashSet<DataGridRow> loadedRows 

    private void HandleUnloadingRow(object sender, DataGridRowEventArgs e) 
    { 
     _loadedRows.Remove(e.Row); 
    } 

    private void HandleLoadingRow(object sender, DataGridRowEventArgs e) 
    { 
     _loadedRows.Add(e.Row); 
    } 
関連する問題