Události náhledu

Události ve verzi Preview, označované také jako události tunelování, jsou směr trasy směrované z kořenového adresáře aplikace směrem k elementu, který událost vyvolal, a jsou hlášeny jako zdroj v datech událostí. Ne všechny scénáře událostí podporují nebo vyžadují události ve verzi Preview; Toto téma popisuje situace, kdy existují události ve verzi Preview, způsob, jakým by je aplikace nebo komponenty měly zpracovávat, a případy, kdy vytváření událostí ve verzi Preview ve vlastních komponentách nebo třídách může být vhodné.

Náhled událostí a vstupu

Při obecném zpracování událostí ve verzi Preview buďte opatrní při označování událostí zpracovávaných v datech událostí. Zpracování události Preview u jakéhokoli jiného prvku, než je prvek, který ho vyvolal (prvek, který je hlášen jako zdroj v datech události), má vliv na to, že neposkytuje prvek příležitost zpracovat událost, která pochází. Někdy se jedná o požadovaný výsledek, zejména pokud příslušné prvky existují v relacích v rámci vytváření ovládacího prvku.

U vstupních událostí konkrétně události ve verzi Preview také sdílejí instance dat událostí s ekvivalentní událostí bublání. Pokud použijete obslužnou rutinu třídy událostí ve verzi Preview k označení vstupní události zpracovávané, obslužná rutina vstupní třídy událostí bublání nebude vyvolána. Nebo pokud k označení obslužné rutiny události použijete obslužnou rutinu instance náhledu, obslužné rutiny pro událost bublání se obvykle nevyvolávají. Obslužné rutiny třídy nebo obslužné rutiny instance lze zaregistrovat nebo připojit s možností, která se má vyvolat, i když je událost označena jako zpracována, ale tato technika se běžně nepoužívá.

Další informace o zpracování tříd a o tom, jak souvisí s událostmi verze Preview, naleznete v tématu Označení směrovaných událostí jako zpracovávaných a zpracování tříd.

Práce s potlačením událostí ovládacími prvky

Jeden scénář, ve kterém se události Preview běžně používají pro zpracování složených řídicích událostí vstupních událostí. Někdy autor ovládacího prvku potlačí určitou událost pocházející ze svého ovládacího prvku, možná tak, aby nahradil událost definovanou komponentou, která obsahuje více informací nebo implikuje konkrétnější chování. Například Windows Presentation Foundation (WPF) potlačí MouseLeftButtonDown a MouseRightButtonDown bublající události vyvolané nebo jeho složené Button prvky ve prospěch zachycení myši a vyvolání Click události, která je vždy vyvolána Button samotným. Button Událost a její data stále pokračují podél trasy, ale vzhledem k tomu Button , že data události označí jako Handled, pouze obslužné rutiny události, které výslovně uvedly, že by měly jednat v handledEventsToo případě, že jsou vyvolány. Pokud další prvky směrem ke kořenovému adresáři vaší aplikace stále chtěly příležitost zpracovat událost potlačenou ovládacími prvky, je jednou z alternativ připojit obslužné rutiny v kódu se zadaným handledEventsToo jako true. Často je ale jednodušší technikou změnit směr směrování, který zpracováváte, aby byl ekvivalentem vstupní události ve verzi Preview. Pokud například ovládací prvek potlačí MouseLeftButtonDown, zkuste místo toho připojit obslužnou rutinu PreviewMouseLeftButtonDown . Tato technika funguje pouze pro vstupní události základního elementu, například MouseLeftButtonDown. Tyto vstupní události používají dvojice tunelů nebo bublin, vyvolává události a sdílí data události.

Každá z těchto technik má vedlejší účinky nebo omezení. Vedlejším účinkem zpracování události preview je, že zpracování události v daném okamžiku může zakázat obslužné rutiny, které očekávají zpracování bublinové události, a proto omezení je, že obvykle není vhodné označit událost zpracovávanou, zatímco je stále v části preview trasy. Omezení handledEventsToo techniky spočívá v tom, že nelze zadat obslužnou rutinu handledEventsToo v XAML jako atribut, musíte zaregistrovat obslužnou rutinu události v kódu po získání odkazu na objekt na element, kde je obslužná rutina připojena.

Viz také