IViewAutomationPeer Interface


Allows a customized view of a ListView that derives from ViewBase to implement automation peer features that are specific to the custom view.

Namespace:   System.Windows.Automation.Peers
Assembly:  PresentationFramework (in PresentationFramework.dll)

Public Interface IViewAutomationPeer


Creates a new instance of the ItemAutomationPeer class.


Gets the control type for the element that is associated with this IViewAutomationPeer.

System_CAPS_pubmethodGetChildren(List(Of AutomationPeer))

Gets the collection of immediate child elements of the specified UI Automation peer.


Gets the control pattern that is associated with the specified patternInterface.


Called by ListView when the collection of items changes.


Called when the custom view is no longer applied to the ListView.

The following code shows a custom view implementing IViewAutomationPeer in a separate class to handle a button that appears at the top of the ListView control.

Public Class OneButtonHeaderView
	Inherits ViewBase
	Protected Overrides Function GetAutomationPeer(ByVal parent As ListView) As IViewAutomationPeer
		Return New OneButtonHeaderViewAutomationPeer(Me, parent)
	End Function
Public Class OneButtonHeaderViewAutomationPeer
	Implements IViewAutomationPeer
	Private m_lv As ListView

	Public Sub New(ByVal control As OneButtonHeaderView, ByVal parent As ListView)
		m_lv = parent
	End Sub

	Private Function CreateItemAutomationPeer(ByVal item As Object) As ItemAutomationPeer Implements IViewAutomationPeer.CreateItemAutomationPeer
		Dim lvAP As ListViewAutomationPeer = TryCast(UIElementAutomationPeer.FromElement(m_lv), ListViewAutomationPeer)
		Return New ListBoxItemAutomationPeer(item, lvAP)
	End Function

	Private Function GetAutomationControlType() As AutomationControlType Implements IViewAutomationPeer.GetAutomationControlType
		Return AutomationControlType.List
	End Function

	Private Function GetChildren(ByVal children As List(Of AutomationPeer)) As List(Of AutomationPeer) Implements IViewAutomationPeer.GetChildren
		' the children parameter is a list of automation peers for all the known items
		' our view must add its banner button peer to this list.

		Dim b As Button = CType(m_lv.Template.FindName("BannerButton", m_lv), Button)
		Dim peer As AutomationPeer = UIElementAutomationPeer.CreatePeerForElement(b)

		'If children is null, we still need to create an empty list to insert the button
		If children Is Nothing Then
			children = New List(Of AutomationPeer)()
		End If

		children.Insert(0, peer)

		Return children
	End Function

	Private Function GetPattern(ByVal patternInterface As PatternInterface) As Object Implements IViewAutomationPeer.GetPattern
		' we can invoke the banner button 
		If patternInterface = PatternInterface.Invoke Then
			Dim b As Button = CType(m_lv.Template.FindName("BannerButton", m_lv), Button)
			Dim peer As AutomationPeer = UIElementAutomationPeer.FromElement(b)
			If peer IsNot Nothing Then
				Return peer
			End If
		End If

		' if this view does not have special handling for the pattern interface, return null
		' the ListViewAutomationPeer.GetPattern default handling will be used.
		Return Nothing
	End Function

	Private Sub ItemsChanged(ByVal e As System.Collections.Specialized.NotifyCollectionChangedEventArgs) Implements IViewAutomationPeer.ItemsChanged
	End Sub

	Private Sub ViewDetached() Implements IViewAutomationPeer.ViewDetached
	End Sub
End Class

.NET Framework
Available since 3.0
Return to top