private void HideShowDetails(object sender, RoutedEventArgs e) { Button expandCollapseButton = (Button)sender; DataGridRow selectedRow = DataGridRow.GetRowContainingElement(expandCollapseButton); if (null != expandCollapseButton && "+" == expandCollapseButton.Content.ToString()) { selectedRow.DetailsVisibility = Visibility.Visible; expandCollapseButton.Content = "-"; } else { selectedRow.DetailsVisibility = Visibility.Collapsed; expandCollapseButton.Content = "+"; if (selectedRow.DataContext is JobPositionValueDTO) { var parentRow = selectedRow.FindParentOfType <DataGridRow>(); parentRow.DetailsVisibility = Visibility.Collapsed; var timer = new DispatcherTimer() { Interval = new TimeSpan(0, 0, 0, 0, 200) }; timer.Tick += (ts, te) => { Dispatcher.BeginInvoke(() => parentRow.DetailsVisibility = Visibility.Visible); timer.Stop(); }; timer.Start(); } } }