/// <summary> /// Returns AutomationPeer if one exists. /// The AutomationPeer may not exist if not yet created by Automation infrastructure /// or if this element is not supposed to have one. /// </summary> internal AutomationPeer GetAutomationPeer() { VerifyAccess(); if (HasAutomationPeer) { return(AutomationPeerField.GetValue(this)); } return(null); }
/// <summary> /// Called by the Automation infrastructure or Control author /// to make sure the AutomationPeer is created. The element may /// create AP or return null, depending on OnCreateAutomationPeer override. /// </summary> internal AutomationPeer CreateAutomationPeer() { VerifyAccess(); //this will ensure the AP is created in the right context AutomationPeer ap = null; if (HasAutomationPeer) { ap = AutomationPeerField.GetValue(this); } else { ap = OnCreateAutomationPeer(); if (ap != null) { AutomationPeerField.SetValue(this, ap); HasAutomationPeer = true; } } return(ap); }