using Gestor.Common.Validation; using Gestor.Model.Common; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Runtime.CompilerServices; using System.Windows; using System.Windows.Controls; using System.Windows.Controls.Primitives; using System.Windows.Media; namespace Gestor.Application.Helpers { public static class DataGridExtensions { public static void EsconderToggles(this DataGrid grid, TipoTela tela, TipoToggle toggles) { try { foreach (object item in grid.ItemContainerGenerator.Items) { grid.ScrollIntoView(item, grid.Columns[0]); grid.UpdateLayout(); DataGridRow dataGridRow = (DataGridRow)grid.ItemContainerGenerator.ContainerFromItem(item); if (dataGridRow == null) { continue; } grid.ScrollIntoView(dataGridRow, grid.Columns[4]); grid.UpdateLayout(); DataGridCellsPresenter visualChild = DataGridExtensions.GetVisualChild(dataGridRow); DataGridCell dataGridCell = (DataGridCell)visualChild.ItemContainerGenerator.ContainerFromIndex(0); if (dataGridCell == null || !dataGridCell.ToString().Contains(ValidationHelper.GetDescription(tela))) { continue; } if (toggles.HasFlag(TipoToggle.Consultar)) { ((DataGridCell)visualChild.ItemContainerGenerator.ContainerFromIndex(1)).Visibility = Visibility.Hidden; } if (toggles.HasFlag(TipoToggle.Incluir)) { ((DataGridCell)visualChild.ItemContainerGenerator.ContainerFromIndex(2)).Visibility = Visibility.Hidden; } if (toggles.HasFlag(TipoToggle.Alterar)) { ((DataGridCell)visualChild.ItemContainerGenerator.ContainerFromIndex(3)).Visibility = Visibility.Hidden; } if (toggles.HasFlag(TipoToggle.Excluir)) { ((DataGridCell)visualChild.ItemContainerGenerator.ContainerFromIndex(4)).Visibility = Visibility.Hidden; } return; } } catch (Exception exception) { } } public static T GetVisualChild(Visual parent) where T : Visual { T t = default(T); int childrenCount = VisualTreeHelper.GetChildrenCount(parent); for (int i = 0; i < childrenCount; i++) { Visual child = (Visual)VisualTreeHelper.GetChild(parent, i); T visualChild = (T)(child as T); if (visualChild == null) { visualChild = DataGridExtensions.GetVisualChild(child); } t = visualChild; if (t != null) { break; } } return t; } } }