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í.
Chování a vzhled automaticky otevírané nabídky
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 false
hodnotu . Výchozí chování však můžete změnit nastavením StaysOpen vlastnosti na false
hodnotu . 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 true
hodnotu .
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 .
Velikost automaticky otevírané nabídky
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.
Místní nabídka a vizuální strom
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é
.NET Desktop feedback