Sdílet prostřednictvím


Přehled vyskakovacího okna

Ovládací prvek Popup poskytuje způsob zobrazení obsahu 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 ovládací prvek Popup a poskytuje informace o jeho použití.

Co je vyskakovací okno?

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

Poznámka

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

Vytvoření vyskakovacího okna

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

<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 Popup můžete sestavit do jiných ovládacích prvků. Následující ovládací prvky implementují ovládací prvek Popup pro konkrétní použití:

Ovládací prvek Popup 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í.

Chování otevření a zavření

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

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

Animace

Ovládací prvek Popup 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 vlastnosti PopupAnimation na hodnotu výčtu PopupAnimation. Aby Popup animace fungovaly správně, je nutné nastavit vlastnost AllowsTransparency na true.

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

Neprůhledné a rastrové efekty

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

Obsah Popup nedědí rastrové efekty, například DropShadowBitmapEffect, které jste přímo nastavili na ovládacím prvku Popup nebo na jakýkoli jiný prvek v nadřazeném okně. Aby se rastrové efekty zobrazovaly na obsahu Popup, musíte nastavit rastrový efekt přímo na jeho obsahu. Například, pokud je prvek StackPanelpodřízeným prvkem Popup, nastavte rastrový efekt na StackPanel.

Ve výchozím nastavení se velikost Popup automaticky přizpůsobí svému obsahu. Když dojde k automatickému nastavení velikosti, můžou být některé rastrové efekty skryté, protože výchozí velikost oblasti obrazovky definovaná pro obsah Popup neposkytuje dostatek místa pro zobrazení rastrových efektů.

Obsah Popup může být také zakryt, když nastavíte RenderTransform na obsahu. V tomto scénáři může být nějaký obsah skrytý, pokud obsah transformovaného 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 možné ovládacímu prvku poskytnout více oblasti.

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

Vyskakovací okno můžete umístit nastavením vlastností PlacementTarget, PlacementRectangle, Placement, HorizontalOffseta VerticalOffsetProperty. Pro více informací viz chování umístění automaticky otevíraného okna. Když je Popup zobrazeno na obrazovce, nepřemístí se, pokud se přemístí jeho nadřazený objekt.

Přizpůsobení umístění vyskakovacího okna

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

Chcete-li přizpůsobit umístění, nastavte vlastnost Placement na Custom. Pak definujte delegáta CustomPopupPlacementCallback, který vrací sadu možných bodů pro umístění uspořádanou podle preferencí a primární osy pro Popup. Bod, který ukazuje největší část Popup, je automaticky vybrán. Příklad najdete v tématu Určení vlastní pozice místní nabídky.

Ovládací prvek Popup nemá vlastní vizuální strom; místo toho vrátí velikost 0 (nula), když je volána metoda MeasureOverride pro Popup. Když však nastavíte vlastnost IsOpenPopup na true, vytvoří se nové okno s vlastním vizuálním stromem. Nové okno obsahuje obsah ChildPopup. Šířka a výška nového okna nesmí být větší než 75 procent šířky nebo výšky obrazovky.

Ovládací prvek Popup udržuje odkaz na jeho Child obsah jako logické podřízené. Po vytvoření nového okna se obsah Popup stane vizuálním potomkem okna a zůstane logickým potomkem Popup. Naopak Popup zůstává logickým rodičem svého Child obsahu.

Viz také