Sdílet prostřednictvím


Přehled překryvných objektů

Ovládací Popup prvek poskytuje způsob, jak zobrazit obsah v samostatném okně, které je plovoucí nad aktuálním oknem aplikace vzhledem k určenému prvku nebo souřadnici obrazovky. Toto téma představuje Popup ovládací prvek a poskytuje informace o jeho použití.

Co je místní nabídka?

Ovládací Popup prvek zobrazuje obsah v samostatném okně vzhledem k prvku nebo bodu na obrazovce. Pokud je tato Popup vlastnost viditelná, IsOpen vlastnost je nastavena na true.

Poznámka:

A Popup se neotevře automaticky, když se ukazatel myši přesune nad nadřazený objekt. Pokud chcete Popup , aby se automaticky otevřela, použijte třídu ToolTip nebo ToolTipService třídu. Další informace najdete v tématu Přehled popisů.

Vytvoření místní nabídky

Následující příklad ukazuje, jak definovat Popup ovládací prvek, který je podřízený prvek ToggleButton ovládacího prvku. ToggleButton Vzhledem k tomu, že může mít pouze jeden podřízený prvek, umístí tento příklad text pro ovládací ToggleButton prvky a Popup ovládací prvky do StackPanel. Obsah objektu Popup se zobrazí v samostatném okně, které se nachází nad oknem aplikace poblíž souvisejícího ToggleButton ovládacího prvku.

<ToggleButton x:Name="TogglePopupButton" Height="30" Width="150" HorizontalAlignment="Left">
    <StackPanel>
        <TextBlock VerticalAlignment="Center" HorizontalAlignment="Center">
            <Run Text="Is button toggled? " />
            <Run Text="{Binding IsChecked, ElementName=TogglePopupButton}" />
        </TextBlock>

        <Popup Name="myPopup" IsOpen="{Binding IsChecked, ElementName=TogglePopupButton}">
            <Border BorderThickness="1">
                <TextBlock Name="myPopupText" Background="LightBlue" Foreground="Blue" Padding="30">
                Popup Text
                </TextBlock>
            </Border>
        </Popup>
    </StackPanel>
</ToggleButton>

Ovládací prvky, které implementují překryvné okno

Ovládací prvky můžete sestavovat Popup do jiných ovládacích prvků. Následující ovládací prvky implementují Popup ovládací prvek pro konkrétní použití:

  • ToolTip. Pokud chcete vytvořit popis pro prvek, použijte tyto ToolTip třídy a ToolTipService třídy. Další informace najdete v tématu Přehled popisů.

  • ContextMenu. Pokud chcete vytvořit místní nabídku pro prvek, použijte ContextMenu ovládací prvek. Další informace naleznete v tématu ContextMenu Přehled.

  • ComboBox. Pokud chcete vytvořit ovládací prvek výběru s rozevíracím seznamem, který se dá zobrazit nebo skrýt, použijte ovládací ComboBox prvek.

  • Expander. Pokud chcete vytvořit ovládací prvek, který zobrazuje záhlaví s sbalitelnou oblastí, která zobrazuje obsah, použijte Expander ovládací prvek. Další informace naleznete v tématu Přehled rozšíření.

Ovládací Popup prvek poskytuje funkce, které umožňují přizpůsobit jeho chování a vzhled. Můžete například nastavit chování při otevření a zavření, animaci, neprůhlednost a rastrové efekty a Popup velikost a umístění.

Otevření a zavření chování

Ovládací Popup prvek zobrazí jeho obsah, pokud je vlastnost nastavena IsOpen na true. Ve výchozím nastavení zůstane otevřená, Popup dokud IsOpen není vlastnost nastavena na falsehodnotu . Výchozí chování však můžete změnit nastavením StaysOpen vlastnosti na falsehodnotu . Když tuto vlastnost nastavíte na false, Popup okno obsahu obsahuje zachytávání myši. Ztráta Popup zachycení myši a okno se zavře, když dojde k události myši mimo Popup okno.

Události Opened a Closed události jsou vyvolány při Popup otevření nebo zavření okna obsahu.

Animace

Ovládací Popup prvek má integrovanou podporu animací, které jsou obvykle spojeny s chováním, jako je fade-in a slide-in. Tyto animace můžete zapnout nastavením PopupAnimation vlastnosti na hodnotu výčtu PopupAnimation . Aby Popup animace fungovaly správně, musíte vlastnost nastavit AllowsTransparency na truehodnotu .

Animace, jako Storyboard je ovládací Popup prvek, můžete použít také.

Neprůhledné a rastrové efekty

Vlastnost OpacityPopup ovládacího prvku nemá žádný vliv na jeho obsah. Ve výchozím nastavení Popup je okno obsahu neprůžné. Chcete-li vytvořit transparentní Popup, nastavte AllowsTransparency vlastnost na true.

Obsah nezdědí Popup rastrové efekty, například DropShadowBitmapEffect, které jste přímo nastavili na ovládacím Popup prvku nebo na jakýkoli jiný prvek v nadřazené okně. Chcete-li, aby se rastrové efekty zobrazovaly na obsahu objektu Popup, je nutné nastavit rastrový efekt přímo na jeho obsah. Pokud je například podřízená Popup položka , StackPanelnastavte rastrový efekt na StackPanelhodnotu .

Ve výchozím nastavení Popup je velikost obsahu automaticky nastavená. Při automatickém nastavení velikosti mohou být některé rastrové efekty skryté, protože výchozí velikost oblasti obrazovky, která je definována pro Popup obsah, neposkytuje dostatek místa pro zobrazení rastrových efektů.

Popup obsah může být také nejasný, když nastavíte RenderTransform obsah. V tomto scénáři může být nějaký obsah skrytý, pokud obsah transformace Popup přesahuje oblast původního Popup. Pokud rastrový efekt nebo transformace vyžaduje více místa, můžete definovat okraj kolem Popup obsahu, aby bylo pro ovládací prvek více oblastí.

Definování pozice automaticky otevírané nabídky

Místní okno můžete umístit nastavením vlastnosti PlacementTarget, , PlacementRectanglePlacement, HorizontalOffseta VerticalOffsetProperty vlastnosti. Další informace naleznete v tématu Chování umístění automaticky otevírané okno. Když Popup se zobrazí na obrazovce, nepřeloží se sám, pokud je jeho nadřazený objekt přemísťován.

Přizpůsobení umístění prvku Popup

Umístění Popup ovládacího prvku můžete přizpůsobit zadáním sady souřadnic, které jsou relativní vzhledem k PlacementTarget místu Popup , kde se má zobrazit.

Chcete-li přizpůsobit umístění, nastavte Placement vlastnost na Customhodnotu . Pak nadefinujte delegáta CustomPopupPlacementCallback, který vrací sadu možných bodů umístění a primárních os (v pořadí podle preference) pro prvek Popup. Bod, který ukazuje největší část je Popup automaticky vybrána. Příklad najdete v článku o určení vlastního umístění prvku Popup.

Popup Ovládací prvek nemá vlastní vizuální strom. Místo toho při zavolání metody Popup vrátí velikost 0 (nulaMeasureOverride). Pokud však nastavíte IsOpen vlastnost Popup na true, vytvoří se nové okno s vlastním vizuálním stromem. Nové okno obsahuje Child obsah .Popup Šířka a výška nového okna nesmí být větší než 75 procent šířky nebo výšky obrazovky.

Ovládací Popup prvek udržuje odkaz na jeho Child obsah jako logické podřízené. Po vytvoření nového okna se obsah Popup stane podřízeným vizuálem okna a zůstane logickým podřízeným objektem Popup. Popup Naopak zůstává logickým nadřazeným objektem jeho Child obsahu.

Viz také