/// <summary> /// Adds the element. /// </summary> /// <param name="frameworkElement"> /// The framework element. /// </param> /// <param name="action"> /// The action to execute when the framework element is loaded. Can be <c>null</c>. /// </param> /// <exception cref="ArgumentNullException"> /// The <paramref name="frameworkElement"/> is <c>null</c>. /// </exception> public void AddElement(FrameworkElement frameworkElement, Action action = null) { Argument.IsNotNull("frameworkElement", frameworkElement); var elementInfo = new WeakFrameworkElementInfo(frameworkElement, action); elementInfo.Loaded += OnFrameworkElementLoaded; elementInfo.Unloaded += OnFrameworkElementUnloaded; lock (_lock) { _frameworkElements.Add(elementInfo); } }