FrameworkElementAutomationPeer.CreatePeerForElement(UIElement) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
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
傳回
FrameworkElementAutomationPeer。
範例
如果您撰寫從其中一個元件元件轉送對等資訊的對等,因為其元件可能會實作模式的元件元件,因此在對等的 GetPatternCore 實作中要求時,CreatePeerForElement 會很有用。 例如,如果其中一個控制項的主要元件元件元件是 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。
傳回的對等類型是由相關UIElement的OnCreateAutomationPeer實作所決定,這通常是Control。 如果 專案 類型的類別程式碼未實作 OnCreateAutomationPeer,則不會建立對等,而且 CreatePeerForElement 會傳回 null。 最佳做法是呼叫 CreatePeerForElement 之後,您應該一律檢查Null,因為有許多Windows 執行階段元素不會有OnCreateAutomationPeer 實作。 例如,ContentControl預設不會有對等,除非它是自訂的或更衍生的Windows 執行階段控制項。
CreatePeerForElement 基本上與 FromElement的行為相同。
即使 CreateAutomationPeer 系統邏輯因某些原因尚未在 專案 目標上執行,CreatePeerForElement 仍可傳回對等。 它會在內部叫用相同的 CreateAutomationPeer 邏輯,以取得對等。