FrameworkElementAutomationPeer.CreatePeerForElement(UIElement) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Создает FrameworkElementAutomationPeer для указанного элемента UIElement.
public:
static AutomationPeer ^ CreatePeerForElement(UIElement ^ element);
static AutomationPeer CreatePeerForElement(UIElement const& element);
public static AutomationPeer CreatePeerForElement(UIElement element);
function createPeerForElement(element)
Public Shared Function CreatePeerForElement (element As UIElement) As AutomationPeer
Параметры
- element
- UIElement
UIElement, связанный с этим FrameworkElementAutomationPeer.
Возвращаемое значение
FrameworkElementAutomationPeer.
Примеры
CreatePeerForElement полезен, если вы создаете одноранговый узел, который пересылает сведения о одноранговом узле из одной из его составных частей, так как это компонентная часть, которая может реализовать шаблон в соответствии с запросом в реализации GetPatternCore однорангового узла. Например, если одна из main компонентов элемента управления является ScrollViewer, сам элемент управления может иметь другую функцию и не прокручивать напрямую. Но одноранговый узел может по-прежнему сообщать о поддержке шаблона прокрутки и предоставлять одноранговый узел, чтобы клиент мог взаимодействовать с шаблоном автоматизации прокручиваемой части.
protected override object GetPatternCore(PatternInterface patternInterface)
{
if (patternInterface == PatternInterface.Scroll)
{
ItemsControl owner = (ItemsControl) base.Owner;
UIElement itemsHost = owner.ItemsHost;
ScrollViewer element = null;
while (itemsHost != owner)
{
itemsHost = VisualTreeHelper.GetParent(itemsHost) as UIElement;
element = itemsHost as ScrollViewer;
if (element != null)
{
break;
}
}
if (element != null)
{
AutomationPeer peer = FrameworkElementAutomationPeer.CreatePeerForElement(element);
if ((peer != null) && (peer is IScrollProvider))
{
return (IScrollProvider) peer;
}
}
}
return base.GetPatternCore(patternInterface);
}
Комментарии
CreatePeerForElement — это вспомогательный класс, который используется пользовательским кодом элемента управления для возврата действующего однорангового экземпляра. С помощью возвращаемого однорангового узла можно запускать события автоматизации в рамках одних и теми же подпрограммами, которые также запускают общие события логики элемента управления или изменяют свойства элемента управления. Или вы можете написать собственные вспомогательные методы, которые выполняют это и вызываются из логики элемента управления.
Созданный объект FrameworkElementAutomationPeer остается в памяти до тех пор, пока не будет уничтожен связанный элемент UIElement . Тот же экземпляр FrameworkElementAutomationPeer возвращается из последующих вызовов CreatePeerForElement и вызовов FromElement , которые ссылаются на тот же экземпляр элемента .
Тип возвращаемого однорангового узла определяется реализацией OnCreateAutomationPeer соответствующего элемента UIElement, который обычно является элементом управления. Если код класса для типа элемента не реализует OnCreateAutomationPeer, одноранговый узел не создается, а Функция CreatePeerForElement возвращает значение NULL. Рекомендуется всегда проверка для значения NULL после вызова CreatePeerForElement, так как существует ряд среда выполнения Windows элементов, которые не будут иметь реализацию OnCreateAutomationPeer. Например, элемент Управления ContentControl не имеет однорангового узла по умолчанию, если он не настроен или не является более производным элементом управления среда выполнения Windows.
Поведение CreatePeerForElement в основном совпадает с поведением FromElement.
CreatePeerForElement может вернуть одноранговый узел, даже если системная логика CreateAutomationPeer по какой-либо причине еще не запущена в целевом элементе . Он вызовет ту же логику CreateAutomationPeer внутри, чтобы получить одноранговый узел.