internal static WeakDataContextChangedListener CreateIfNecessary(object source, IDataContextChangedListener listener)
 {
     if (!(source is UIElement))
     {
         return null;
     }
     return new WeakDataContextChangedListener(source as UIElement, listener);
 }
 private WeakDataContextChangedListener(UIElement source, IDataContextChangedListener listener)
 {
     this.mentor = source;
     this.mentor.DataContextChanged += new DataContextChangedEventHandler(this.MentorDataContextChanged);
     this.weakListener = new WeakReference(listener);
 }
 internal WeakDataContextChangedListener(UIElement mentor, IDataContextChangedListener listener)
 {
     this.mentor = mentor;
     this.mentor.DataContextChanged += this.MentorDataContextChanged;
     this.weakListener = new WeakReference <IDataContextChangedListener>(listener);
 }