Panoramica sul controllo Popup

Il Popup controllo consente di visualizzare il contenuto in una finestra separata che passa alla finestra dell'applicazione corrente rispetto a un elemento designato o a una coordinata dello schermo. In questo argomento viene presentato il Popup controllo e vengono fornite informazioni sull'uso.

Definizione di un controllo Popup

Un Popup controllo visualizza il contenuto in una finestra separata rispetto a un elemento o a un punto sullo schermo. Quando è Popup visibile, la IsOpen proprietà viene impostata su true.

Nota

Un Popup oggetto non viene aperto automaticamente quando il puntatore del mouse si sposta sull'oggetto padre. Se si desidera aprire automaticamente un oggetto Popup , usare la ToolTip classe o ToolTipService . Per altre informazioni, vedere Panoramica sul controllo ToolTip.

Creazione di un popup

Nell'esempio seguente viene illustrato come definire un Popup controllo che rappresenta l'elemento figlio di un ToggleButton controllo . Poiché un ToggleButton oggetto può avere un solo elemento figlio, questo esempio inserisce il testo per i ToggleButton controlli e Popup in un oggetto StackPanel. Il contenuto di Popup viene visualizzato in una finestra separata che viene spostata sulla finestra dell'applicazione vicino al controllo correlato 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>

Controlli che implementano un controllo Popup

È possibile compilare Popup controlli in altri controlli. I controlli seguenti implementano il Popup controllo per usi specifici:

Il Popup controllo fornisce funzionalità che consentono di personalizzarne il comportamento e l'aspetto. Ad esempio, è possibile impostare il comportamento di apertura e chiusura, l'animazione, l'opacità e gli effetti bitmap e Popup le dimensioni e la posizione.

Comportamento di apertura e di chiusura

Un Popup controllo visualizza il contenuto quando la IsOpen proprietà è impostata su true. Per impostazione predefinita, Popup rimane aperto fino a quando la IsOpen proprietà non è impostata su false. Tuttavia, è possibile modificare il comportamento predefinito impostando la StaysOpen proprietà su false. Quando si imposta questa proprietà su false, la finestra del contenuto ha l'acquisizione Popup del mouse. Perde l'acquisizione Popup del mouse e la finestra si chiude quando si verifica un evento del mouse all'esterno della Popup finestra.

Gli Opened eventi e Closed vengono generati quando la finestra del Popup contenuto è aperta o chiusa.

Animazione

Il Popup controllo include il supporto predefinito per le animazioni che sono in genere associate a comportamenti come dissolvenza in entrata e scorrimento. Puoi attivare queste animazioni impostando la PopupAnimation proprietà su un PopupAnimation valore di enumerazione. Affinché Popup le animazioni funzionino correttamente, è necessario impostare la AllowsTransparency proprietà su true.

Puoi anche applicare animazioni come Storyboard al Popup controllo.

Effetti di opacità e bitmap

La Opacity proprietà di un Popup controllo non ha alcun effetto sul relativo contenuto. Per impostazione predefinita, la finestra del Popup contenuto è opaca. Per creare un oggetto trasparente Popup, impostare la AllowsTransparency proprietà su true.

Il contenuto di un Popup oggetto non eredita effetti bitmap, ad esempio DropShadowBitmapEffect, impostati direttamente sul Popup controllo o su qualsiasi altro elemento nella finestra padre. Affinché gli effetti bitmap vengano visualizzati sul contenuto di un Popupoggetto , è necessario impostare l'effetto bitmap direttamente sul relativo contenuto. Ad esempio, se l'elemento figlio di è Popup , StackPanelimpostare l'effetto bitmap su StackPanel.

Per impostazione predefinita, un oggetto Popup viene ridimensionato automaticamente in base al contenuto. Quando si verifica il ridimensionamento automatico, alcuni effetti bitmap possono essere nascosti perché le dimensioni predefinite dell'area dello schermo definita per il Popup contenuto non forniscono spazio sufficiente per gli effetti bitmap da visualizzare.

Popup il contenuto può anche essere oscurato quando si imposta un RenderTransform oggetto sul contenuto. In questo scenario, alcuni contenuti potrebbero essere nascosti se il contenuto dell'oggetto trasformato Popup si estende oltre l'area dell'oggetto originale Popup. Se un effetto bitmap o una trasformazione richiede più spazio, è possibile definire un margine intorno al Popup contenuto per fornire più area per il controllo.

Definizione della posizione di un controllo Popup

È possibile posizionare un popup impostando le PlacementTargetproprietà , PlacementRectanglePlacement, HorizontalOffset, e VerticalOffsetProperty . Per altre informazioni, vedere Comportamento del controllo Popup in relazione al posizionamento. Quando Popup viene visualizzato sullo schermo, non si riposiziona se il padre è riposizionato.

Personalizzazione del posizionamento di un controllo Popup

È possibile personalizzare la posizione di un Popup controllo specificando un set di coordinate relative alla PlacementTarget posizione in cui si desidera visualizzare l'oggetto Popup .

Per personalizzare il posizionamento, impostare la Placement proprietà su Custom. e quindi definire un delegato CustomPopupPlacementCallback che restituisca un set di possibili punti di posizionamento e assi primari (in ordine di preferenza) per il controllo Popup. Il punto che mostra la parte più grande di Popup viene selezionato automaticamente. Per un esempio, vedere Procedura: Specificare una posizione personalizzata per un controllo Popup.

Un Popup controllo non ha una propria struttura ad albero visuale, ma restituisce invece una dimensione pari a 0 (zero) quando viene chiamato il MeasureOverride metodo per Popup . Tuttavia, quando si imposta la IsOpen proprietà di Popup su true, viene creata una nuova finestra con la relativa struttura ad albero visuale. La nuova finestra contiene il Child contenuto di Popup. La larghezza e l'altezza della nuova finestra non possono superare il 75 per cento della larghezza o dell'altezza dello schermo.

Il Popup controllo mantiene un riferimento al relativo Child contenuto come figlio logico. Quando viene creata la nuova finestra, il contenuto di Popup diventa un elemento figlio visivo della finestra e rimane l'elemento figlio logico di Popup. Al contrario, Popup rimane l'elemento padre logico del relativo Child contenuto.

Vedi anche