comparison delete me/Glimpse/Glimpse Controls/BrokenBindingsViewer.xaml.vb @ 59:3591c26bd63e

MVVMLight added
author Steven Hollidge <stevenhollidge@hotmail.com>
date Sat, 21 Apr 2012 19:20:28 +0100
parents
children
comparison
equal deleted inserted replaced
58:241e2f22ed3c 59:3591c26bd63e
1 Imports System.Reflection
2 Imports System.Windows.Data
3 Partial Public Class BrokenBindingsViewer
4 Inherits UserControl
5
6 Public Sub New()
7 InitializeComponent()
8 End Sub
9
10 Private Sub BrokenBindings_Loaded(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles Me.Loaded
11 Me.icBrokenBindings.Items.Clear()
12 LoadBrokenBindings(GlimpseService.CreateInstance.RootVisual)
13 End Sub
14
15 Private Sub LoadBrokenBindings(ByVal uie As UIElement)
16
17 Dim fwe As FrameworkElement = TryCast(uie, FrameworkElement)
18
19 If fwe IsNot Nothing Then
20
21 For Each fi As FieldInfo In fwe.GetType.GetFields(BindingFlags.Public Or BindingFlags.FlattenHierarchy Or BindingFlags.Instance Or BindingFlags.Static)
22
23 If fi.FieldType Is GetType(DependencyProperty) Then
24
25 Dim be As BindingExpression = fwe.GetBindingExpression(DirectCast(fi.GetValue(Nothing), DependencyProperty))
26
27 If be IsNot Nothing AndAlso be.ParentBinding.Source Is Nothing AndAlso be.ParentBinding.RelativeSource Is Nothing Then
28
29 Dim bolIsInherited As Boolean = False
30
31 If fwe.DataContext IsNot Nothing AndAlso Not String.IsNullOrEmpty(be.ParentBinding.Path.Path) Then
32
33 For Each p As PropertyInfo In fwe.DataContext.GetType.GetProperties(BindingFlags.Public Or BindingFlags.FlattenHierarchy Or BindingFlags.Static Or BindingFlags.Instance)
34
35 If String.Compare(p.Name, be.ParentBinding.Path.Path) = 0 Then
36 bolIsInherited = True
37 Exit For
38 End If
39
40 Next
41
42 End If
43
44 If bolIsInherited Then
45 Exit For
46 End If
47
48 'this code handles empty bindings on the Button controls
49 'I'll have to look into why the Button has an empty or unresolved binding
50 If fwe.Name = "" AndAlso fwe.GetType.Name = "TextBlock" AndAlso fi.Name = "TextProperty" AndAlso be.ParentBinding.Path.Path = "" Then
51 Exit For
52 End If
53
54 Dim objBrokenBinding As New BrokenBinding(fwe.Name, fwe.GetType.Name, fi.Name, be.ParentBinding.Path.Path)
55 Me.icBrokenBindings.Items.Add(objBrokenBinding)
56 System.Diagnostics.Debug.WriteLine(String.Format("Broken Binding - ", objBrokenBinding.ToString))
57 End If
58
59 End If
60
61 Next
62
63 Dim children As Integer = VisualTreeHelper.GetChildrenCount(fwe)
64
65 For intX As Integer = 0 To children - 1
66
67 Dim child As FrameworkElement = TryCast(VisualTreeHelper.GetChild(fwe, intX), FrameworkElement)
68
69 If child IsNot Nothing Then
70 LoadBrokenBindings(child)
71 End If
72
73 Next
74
75 End If
76
77 End Sub
78
79 End Class