-
-
Notifications
You must be signed in to change notification settings - Fork 351
/
Snoop.psm1
64 lines (59 loc) · 1.51 KB
/
Snoop.psm1
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
function Get-AllItems {
function Drill($item) {
foreach ($child in $item.Children) {
Drill $child
}
$item
}
Drill $root
}
function Find-By {
<#
.SYNOPSIS
Recursively finds an element contained in the visual tree matched using a predicate.
.PARAMETER predicate
The script block which filters on items.
.PARAMETER select
If enabled, selects the first match.
#>
param([parameter(mandatory=$true)] [scriptblock] $predicate, [switch] $select)
foreach ($i in (Get-AllItems | ? $predicate)) {
$i
if ($select) {
$i.IsSelected = $true
break
}
}
}
function Find-ByName {
<#
.SYNOPSIS
Recursively finds an element contained in the visual tree matched by name.
.PARAMETER name
The regular expression to match on the element's x:Name.
.PARAMETER select
If enabled, selects the first match.
#>
param([parameter(mandatory=$true)] [string] $name, [switch] $select)
Find-By { $_.Target.Name -match $name } -select:$select
}
<#
.SYNOPSIS
Recursively finds an element contained in the visual tree matched by name.
.PARAMETER type
The regular expression to match on the element's type.
.PARAMETER select
If enabled, selects the first match.
#>
function Find-ByType {
param([parameter(mandatory=$true)] [string] $type, [switch]$select)
Find-By { $_.Target.GetType().Name -match $type } -select:$select
}
<#
.SYNOPSIS
Gets the currently selected tree item's data context.
#>
function Get-SelectedDataContext {
$selected.Target.DataContext
}
Export-ModuleMember Find-By,Find-ByType,Find-ByName,Get-SelectedDataContext