IViewAutomationPeer Interfaccia
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
public interface class IViewAutomationPeer
public interface IViewAutomationPeer
type IViewAutomationPeer = interface
Public Interface IViewAutomationPeer
- Derivato
Esempio
Il codice seguente mostra una visualizzazione personalizzata che implementa IViewAutomationPeer in una classe separata per gestire un pulsante visualizzato nella parte superiore del ListView controllo.
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
Metodi
CreateItemAutomationPeer(Object) |
Crea una nuova istanza della classe ItemAutomationPeer. |
GetAutomationControlType() |
Ottiene il tipo di controllo per l’elemento associato a IViewAutomationPeer. |
GetChildren(List<AutomationPeer>) |
Ottiene la raccolta di elementi figlio immediati dell'Automazione interfaccia utente peer specificato. |
GetPattern(PatternInterface) |
Ottiene il pattern di controllo associato all'oggetto |
ItemsChanged(NotifyCollectionChangedEventArgs) |
Chiamato da ListView quando l’insieme di elementi viene modificato. |
ViewDetached() |
Chiamato quando la visualizzazione personalizzata non è più applicata al ListView. |