コード例 #1
0
 /// <summary>
 /// Recursive method to iterate in the controls obtained from the GetControlsIterator
 /// </summary>
 /// <param name="parent">The actual control in the search</param>
 /// <param name="control">The control to be searched</param>
 /// <param name="VisualParentDictionary">Stores the controls and their parent found previously</param>
 /// <returns></returns>
 public static IStateObject FindVisualParent(IControlsContainer parent, ControlViewModel control, Dictionary<string, IStateObject> VisualParentDictionary)
 {
     if (parent == null)
     {
         return null; // GetControlsIterator can return null controls
     }
     var Controls = parent.GetControlsIterator();
     IStateObject VisualParent = null;
     for (var i = 0; i < Controls.Count(); i++)
     {
         var ctl = Controls.ElementAt(i);
         if (ctl == control)
         {
             if (!VisualParentDictionary.ContainsKey(control.UniqueID)) VisualParentDictionary.Add(control.UniqueID, parent);
             return parent as IStateObject;
         }
         else
         {
             VisualParent = FindVisualParent(ctl, control, VisualParentDictionary);
             if (VisualParent != null)
             {
                 return VisualParent;
             }
         }
     }
     return VisualParent;
 }