-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMainWindow.ExplorerSignalGrid.cs
More file actions
73 lines (61 loc) · 2.25 KB
/
Copy pathMainWindow.ExplorerSignalGrid.cs
File metadata and controls
73 lines (61 loc) · 2.25 KB
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
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Threading;
namespace ArIED61850Tester;
public partial class MainWindow
{
private void QueueExplorerSignalGridLayout()
{
Dispatcher.BeginInvoke(
DispatcherPriority.Loaded,
new Action(ConfigureExplorerSignalGridForCompactFit));
}
private void ConfigureExplorerSignalGridForCompactFit()
{
var signalGrid = FindExplorerVisualChildren<DataGrid>(MainTabs)
.FirstOrDefault(grid =>
{
if (grid.Columns.Count != 6)
return false;
var headers = grid.Columns
.Select(column => column.Header?.ToString() ?? string.Empty)
.ToArray();
return headers.SequenceEqual(new[]
{
"Signal",
"IEC Telegram",
"Value",
"Quality",
"IED Timestamp",
"Acquisition"
});
});
if (signalGrid == null)
return;
ScrollViewer.SetHorizontalScrollBarVisibility(signalGrid, ScrollBarVisibility.Disabled);
signalGrid.CanUserResizeColumns = false;
signalGrid.FrozenColumnCount = 0;
var weights = new[] { 1.00, 1.55, 0.82, 0.68, 1.15, 1.05 };
var minimums = new[] { 90d, 140d, 80d, 70d, 135d, 115d };
for (var index = 0; index < signalGrid.Columns.Count; index++)
{
signalGrid.Columns[index].MinWidth = minimums[index];
signalGrid.Columns[index].Width = new DataGridLength(weights[index], DataGridLengthUnitType.Star);
}
}
private static IEnumerable<T> FindExplorerVisualChildren<T>(DependencyObject? root)
where T : DependencyObject
{
if (root == null)
yield break;
for (var index = 0; index < VisualTreeHelper.GetChildrenCount(root); index++)
{
var child = VisualTreeHelper.GetChild(root, index);
if (child is T typed)
yield return typed;
foreach (var descendant in FindExplorerVisualChildren<T>(child))
yield return descendant;
}
}
}