Ejemplo n.º 1
0
        internal static void OnVisualChildChanged(DependencyObject parent, DependencyObject child, bool isAdded)
        {
            EventHandler <VisualTreeChangeEventArgs> visualTreeChanged = VisualDiagnostics.s_visualTreeChanged;

            if (visualTreeChanged != null && EnableHelper.IsVisualTreeChangeEnabled)
            {
                int index;
                VisualTreeChangeType changeType;
                if (isAdded)
                {
                    index      = VisualDiagnostics.GetChildIndex(parent, child);
                    changeType = VisualTreeChangeType.Add;
                }
                else
                {
                    // We cannot reliably get correct child index for a removed child. We'll force it to be -1;
                    index      = -1;
                    changeType = VisualTreeChangeType.Remove;
                }

                RaiseVisualTreeChangedEvent(
                    visualTreeChanged,
                    new VisualTreeChangeEventArgs(parent, child, index, changeType),
                    // see EnableHelper.IsChangePermitted
                    isPotentialOuterChange: (changeType == VisualTreeChangeType.Add && index == 0 && VisualTreeHelper.GetParent(parent) == null));
            }
        }
        static ResourceDictionaryDiagnostics()
        {
            IsEnabled = VisualDiagnostics.IsEnabled &&
                        VisualDiagnostics.IsEnvironmentVariableSet(null, "ENABLE_XAML_DIAGNOSTICS_SOURCE_INFO");

            // internal property, not visible to user
            IgnorableProperties.Add(typeof(ResourceDictionary).GetProperty("DeferrableContent"));
        }
        // Calls critical method IsEnvironmentVariableSet, but doesn't expose data
        static ResourceDictionaryDiagnostics()
        {
            IsEnabled = VisualDiagnostics.IsEnabled &&
                        VisualDiagnostics.IsEnvironmentVariableSet(null, XamlSourceInfoHelper.XamlSourceInfoEnvironmentVariable);

            // internal property, not visible to user
            IgnorableProperties.Add(typeof(ResourceDictionary).GetProperty("DeferrableContent"));
        }
Ejemplo n.º 4
0
 // this method is (also) called via private reflection from test code
 private static void InitializeEnableXamlSourceInfo(string value)
 {
     if (VisualDiagnostics.IsEnabled &&
         VisualDiagnostics.IsEnvironmentVariableSet(value, "ENABLE_XAML_DIAGNOSTICS_SOURCE_INFO") &&
         InitializeXamlObjectEventArgs())
     {
         s_sourceInfoTable = new ConditionalWeakTable <object, XamlSourceInfo>();
     }
     else
     {
         s_sourceInfoTable = null;
     }
 }
Ejemplo n.º 5
0
 // this method is (also) called via private reflection from test code
 private static void InitializeEnableXamlSourceInfo(string value)
 {
     if (VisualDiagnostics.IsEnabled &&
         VisualDiagnostics.IsEnvironmentVariableSet(value, XamlSourceInfoHelper.XamlSourceInfoEnvironmentVariable) &&
         InitializeXamlObjectEventArgs())
     {
         s_sourceInfoTable = new ConditionalWeakTable <object, XamlSourceInfo>();
     }
     else
     {
         s_sourceInfoTable = null;
     }
 }
        static BindingDiagnostics()
        {
            IsEnabled = VisualDiagnostics.IsEnabled && VisualDiagnostics.IsEnvironmentVariableSet(null, XamlSourceInfoHelper.XamlSourceInfoEnvironmentVariable);

            if (IsEnabled)
            {
                // Listeners may miss the initial set of binding failures, so cache events until the first listener attaches.
                // Normally there will only be one listener added soon after the process starts,
                // and it will want to know about any binding failures that already happened.

                s_pendingEvents     = new List <BindingFailedEventArgs>();
                s_pendingEventsLock = new object();
            }
        }
Ejemplo n.º 7
0
        internal static void OnVisualChildChanged(DependencyObject parent, DependencyObject child, bool isAdded)
        {
            EventHandler <VisualTreeChangeEventArgs> visualTreeChanged = VisualDiagnostics.s_visualTreeChanged;

            if (visualTreeChanged != null && VisualDiagnostics.IsVisualTreeChangeEnabled)
            {
                int index;
                VisualTreeChangeType changeType;
                if (isAdded)
                {
                    index      = VisualDiagnostics.GetChildIndex(parent, child);
                    changeType = VisualTreeChangeType.Add;
                }
                else
                {
                    // We cannot reliably get correct child index for a removed child. We'll force it to be -1;
                    index      = -1;
                    changeType = VisualTreeChangeType.Remove;
                }
                VisualTreeChangeEventArgs args = new VisualTreeChangeEventArgs(parent, child, index, changeType);
                visualTreeChanged(null, args);
            }
        }