IViewAutomationPeer Интерфейс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
public interface class IViewAutomationPeer
public interface IViewAutomationPeer
type IViewAutomationPeer = interface
Public Interface IViewAutomationPeer
- Производный
Примеры
В следующем коде показано пользовательское представление, реализующееся IViewAutomationPeer в отдельном классе для обработки кнопки, которая отображается в верхней части ListView элемента управления.
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
Методы
CreateItemAutomationPeer(Object) |
Создает новый экземпляр класса ItemAutomationPeer. |
GetAutomationControlType() |
Получает тип элемента управления для элемента, связанного с данным объектом IViewAutomationPeer. |
GetChildren(List<AutomationPeer>) |
Возвращает коллекцию непосредственных дочерних элементов указанного модель автоматизации пользовательского интерфейса однорангового узла. |
GetPattern(PatternInterface) |
Получает шаблон элемента управления, связанный с заданным |
ItemsChanged(NotifyCollectionChangedEventArgs) |
Вызывается представлением ListView при изменении коллекции элементов. |
ViewDetached() |
Вызывается, когда пользовательское представление больше не применяется к объекту ListView. |