Condividi tramite


Panoramica del popup

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

Che cos'è un 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.

Annotazioni

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 Cenni preliminari sulla descrizione comando.

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 popup

È possibile integrare 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 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 di contenuto Popup ha l'acquisizione del mouse. Popup perde l'acquisizione del mouse e la finestra si chiude quando si verifica un evento del mouse al di fuori della finestra Popup.

Gli eventi Opened e Closed sono sollevati quando la finestra di contenuto Popup è aperta o chiusa.

Animazione

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

Puoi anche applicare animazioni come Storyboard al Popup controllo.

Opacità ed effetti 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 non eredita effetti bitmap, come DropShadowBitmapEffect, che hai impostato direttamente sul controllo Popup 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 il figlio di Popup è un StackPanel, impostare 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 applica un RenderTransform parametro al 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.

La definizione della posizione del popup

È possibile posizionare un popup impostando le proprietà PlacementTarget, PlacementRectangle, Placement, HorizontalOffset e VerticalOffsetProperty. Per ulteriori informazioni, consulta il comportamento del posizionamento dei popup. Quando Popup viene visualizzato sullo schermo, non si riposiziona se l'elemento padre viene spostato.

Personalizzazione del posizionamento 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. Definire quindi un delegato CustomPopupPlacementCallback che restituisce un set di possibili punti di posizionamento e assi primari (in ordine di preferenza) per il Popup. Il punto che mostra la parte più grande di Popup viene selezionato automaticamente. Per un esempio, vedere Specificare una posizione popup personalizzata.

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 essere superiori al 75% 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.

Vedere anche