summaryrefslogtreecommitdiff
path: root/Codemerx/Gestor.Application/Helpers/DataGridExtensions.cs
blob: acffb1de4e096bbd27073c1ea1d381617e52dd14 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
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<DataGridCellsPresenter>(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<T>(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<T>(child);
				}
				t = visualChild;
				if (t != null)
				{
					break;
				}
			}
			return t;
		}
	}
}