void DataGridScroll(ScrollChangedEventArgs e, DataGrid dataGrid1, DataGrid dataGrid2) { if (e.HorizontalChange != 0.0f) { ScrollViewer sv; Type t = dataGrid1.GetType(); try { sv = t.InvokeMember("InternalScrollHost", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.GetProperty, null, dataGrid2, null) as ScrollViewer; sv.ScrollToHorizontalOffset(e.HorizontalOffset); } catch (Exception ex) { MessageBox.Show(ex.Message); } } if (e.VerticalChange != 0.0f) { ScrollViewer sv = null; Type t = dataGrid1.GetType(); try { sv = t.InvokeMember("InternalScrollHost", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.GetProperty, null, dataGrid2, null) as ScrollViewer; sv.ScrollToVerticalOffset(e.VerticalOffset); } catch (Exception ex) { MessageBox.Show(ex.Message); } } }
public static bool isDataGridHasCellValidationError(DataGrid dtGrid) { bool IsError = false; try { System.Reflection.PropertyInfo P = null; P = dtGrid.GetType().GetProperty("HasCellValidationError", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance); if (P != null) { IsError = (bool)P.GetValue(dtGrid, null); } } catch { } return IsError; }