IViewAutomationPeer Schnittstelle

Definition

Ermöglicht das Erstellen einer benutzerdefinierten Ansicht von ListView, die von ViewBase abgeleitet wird, um spezifische Automatisierungspeerfeatures für die benutzerdefinierte Ansicht zu implementieren.

public interface class IViewAutomationPeer
public interface IViewAutomationPeer
type IViewAutomationPeer = interface
Public Interface IViewAutomationPeer
Abgeleitet

Beispiele

Der folgende Code zeigt eine benutzerdefinierte Ansicht IViewAutomationPeer , die in einer separaten Klasse implementiert wird, um eine Schaltfläche zu behandeln, die oben im ListView Steuerelement angezeigt wird.

public class OneButtonHeaderView : ViewBase
{
    protected override IViewAutomationPeer GetAutomationPeer(ListView parent)
    {
        return new OneButtonHeaderViewAutomationPeer( this, parent );
    }
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 : IViewAutomationPeer
{
    ListView m_lv;

    public OneButtonHeaderViewAutomationPeer(OneButtonHeaderView control, ListView parent)
    {
        m_lv = parent;
    }

    ItemAutomationPeer IViewAutomationPeer.CreateItemAutomationPeer(Object item)
    {
        ListViewAutomationPeer lvAP = UIElementAutomationPeer.FromElement(m_lv) as ListViewAutomationPeer;
        return new ListBoxItemAutomationPeer(item, lvAP);
    }

    AutomationControlType IViewAutomationPeer.GetAutomationControlType()
    {
        return AutomationControlType.List;
    }

    List<AutomationPeer> IViewAutomationPeer.GetChildren(List<AutomationPeer> children)
    {
        // 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.

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

        //If children is null, we still need to create an empty list to insert the button
        children ??= new List<AutomationPeer>();

        children.Insert(0, peer);

        return children;
    }

    Object IViewAutomationPeer.GetPattern(PatternInterface patternInterface)
    {
        // we can invoke the banner button 
        if (patternInterface == PatternInterface.Invoke)
        {
            Button b = (Button)m_lv.Template.FindName("BannerButton", m_lv);
            AutomationPeer peer = UIElementAutomationPeer.FromElement(b);
            if (peer != null)
                return peer;
        }

        // if this view does not have special handling for the pattern interface, return null
        // the ListViewAutomationPeer.GetPattern default handling will be used.
        return null;
    }

    void IViewAutomationPeer.ItemsChanged(System.Collections.Specialized.NotifyCollectionChangedEventArgs e) { }

    void IViewAutomationPeer.ViewDetached() { }
}
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

Methoden

CreateItemAutomationPeer(Object)

Erstellt eine neue Instanz der ItemAutomationPeer-Klasse.

GetAutomationControlType()

Ruft den Steuerelementtyp für das Element ab, das diesem IViewAutomationPeer zugeordnet ist.

GetChildren(List<AutomationPeer>)

Ruft die Auflistung von unmittelbaren untergeordneten Elementen des angegebenen Benutzeroberflächenautomatisierung Peers ab.

GetPattern(PatternInterface)

Ruft das Steuerelementmuster ab, das dem angegebenen patternInterface zugeordnet ist.

ItemsChanged(NotifyCollectionChangedEventArgs)

Wird von ListView aufgerufen, wenn die Auflistung der Elemente geändert wird.

ViewDetached()

Wird aufgerufen, wenn die benutzerdefinierte Ansicht nicht mehr auf den ListView angewendet ist.

Gilt für

Siehe auch