Sdílet prostřednictvím


Implementace vzoru ovládacího prvku ExpandCollapse pro automatizaci uživatelského rozhraní

Poznámka:

Tato dokumentace je určená pro vývojáře rozhraní .NET Framework, kteří chtějí používat spravované třídy automatizace uživatelského rozhraní definované v oboru názvů System.Windows.Automation. Nejnovější informace o automatizaci uživatelského rozhraní najdete v tématu rozhraní API služby Windows Automation: Automatizace uživatelského rozhraní.

Toto téma představuje pokyny a konvence pro implementaci IExpandCollapseProvider, včetně informací o vlastnostech, metodách a událostech. Odkazy na další odkazy jsou uvedeny na konci přehledu.

Model ExpandCollapsePattern ovládání se používá k podpoře ovládacích prvků, které se vizuálně rozbalují, aby zobrazily více obsahu, a sbalují, aby skryly obsah. Příklady ovládacích prvků, které implementují tento vzor ovládacího prvku, naleznete v tématu mapování vzorů ovládacích prvků pro klienty automatizace uživatelského rozhraní.

Pokyny a konvence implementace

Při implementaci vzoru ovládacího prvku ExpandCollapse si všimněte následujících pokynů a konvencí:

  • Agregační ovládací prvky, které jsou vytvořeny s podřízenými objekty poskytujícími funkci rozbalení/sbalení v uživatelském rozhraní, musí podporovat vzor ExpandCollapsePattern ovládacího prvku, zatímco jejich podřízené prvky nikoliv. Například ovládací prvek pole se seznamem je sestaven pomocí kombinace ovládacích prvků seznamu, tlačítka a úprav, ale je to pouze nadřazené pole se seznamem, které musí podporovat ExpandCollapsePattern.

    Poznámka:

    Výjimkou je ovládací prvek nabídky, což je agregace jednotlivých objektů MenuItem. Objekty MenuItem mohou podporovat ExpandCollapsePattern vzor ovládacího prvku, ale nadřazený ovládací prvek Menu nemůže. Podobná výjimka platí pro ovládací prvky Tree a Tree Item.

  • ExpandCollapseState Pokud je ovládací prvek nastaven na LeafNode, všechny ExpandCollapsePattern funkce jsou momentálně neaktivní pro ovládací prvek a jediné informace, které lze získat pomocí tohoto vzoru ovládacího prvku, je ExpandCollapseState. Pokud se následně přidají nějaké podřízené objekty, ExpandCollapseState se změní a ExpandCollapsePattern funkcionalita se aktivuje.

  • ExpandCollapseState odkazuje pouze na viditelnost bezprostředních podřízených objektů; neodkazuje na viditelnost všech následnických objektů.

  • Funkce rozbalení a sbalení je specifická pro ovládací prvek. Tady jsou příklady tohoto chování.

    • Osobní nabídka Office může být třístavový MenuItem (Expanded, Collapsed a PartiallyExpanded), kde ovládací prvek určuje stav, který má přijmout, když je volána Expand nebo pokud je Collapse volána.

    • Volání Expand na TreeItem může zobrazit všechny podřízené položky nebo pouze přímé děti.

    • Pokud volání Expand nebo Collapse na ovládacím prvku udržuje stav jeho potomků, měla by být odeslána událost změny viditelnosti, nikoli událost změny stavu. Pokud nadřazený ovládací prvek neudržuje stav svých potomků při jeho sbalení, může ovládací prvek zničit všechny potomky, kteří již nejsou viditelní, a vyvolat událost zničení; nebo může změnit ExpandCollapseState pro každého potomka a vyvolat událost změny viditelnosti.

  • Aby byla zaručena navigace, je žádoucí, aby objekt byl ve stromu uživatelského rozhraní automatizace (s odpovídajícím stavem viditelnosti) bez ohledu na jeho nadřazené prvkyExpandCollapseState. Pokud se potomci generují na vyžádání, můžou se zobrazit pouze ve stromu automatizace uživatelského rozhraní po prvním zobrazení nebo pouze v době, kdy jsou viditelné.

Požadované členy pro IExpandCollapseProvider

Pro implementaci IExpandCollapseProviderjsou vyžadovány následující vlastnosti a metody .

Požadované členy Typ členu Poznámky
ExpandCollapseState Vlastnictví Žádné
Expand Metoda Žádné
Collapse Metoda Žádné
AutomationPropertyChangedEventHandler Událost Tento ovládací prvek nemá žádné přidružené události; použít tohoto obecného delegáta.

Výjimky

Poskytovatelé musí vyvolat následující výjimky.

Typ výjimky Podmínka
InvalidOperationException Buď Expand nebo Collapse je volána při ExpandCollapseState = LeafNode.

Viz také