Condividi tramite


Cenni preliminari sul controllo Popup

Aggiornamento: novembre 2007

Il controllo Popup consente di visualizzare il contenuto relativo a uno specifico elemento o coordinata dello schermo in una finestra separata, mobile rispetto alla finestra dell'applicazione corrente. In questo argomento viene descritto il controllo Popup e vengono fornite informazioni sul relativo utilizzo.

Nel presente argomento sono contenute le seguenti sezioni.

  • Definizione di un controllo Popup
  • Creazione di un controllo Popup
  • Controlli che implementano un controllo Popup
  • Comportamento e aspetto del controllo Popup
  • Definizione della posizione di un controllo Popup
  • Controllo Popup e struttura ad albero visuale
  • Argomenti correlati

Definizione di un controllo Popup

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

Nota

Un oggetto Popup non si apre automaticamente quando il puntatore del mouse si sposta sul relativo oggetto padre. Se si desidera aprire automaticamente un Popup, utilizzare la classe ToolTip o ToolTipService. Per ulteriori informazioni, vedere Panoramica sul controllo ToolTip.

Creazione di un controllo Popup

Nell'esempio seguente viene illustrato come definire un controllo Popup che è l'elemento figlio di un controllo Button. Poiché Button può avere un solo elemento figlio, in questo esempio il testo per i controlli Button e Popup viene inserito in un oggetto StackPanel. Il contenuto di Popup viene inserito in un controllo TextBlock che visualizza il relativo testo in una finestra separata mobile rispetto alla finestra dell'applicazione accanto al relativo controllo Button.

<Button HorizontalAlignment="Left" Click="DisplayPopup" 
        Width="150" Margin="20,10,0,0">
  <StackPanel>
    <TextBlock>Display Your Popup Text</TextBlock>
    <Popup Name="myPopup">
      <TextBlock Name="myPopupText" 
                 Background="LightBlue" 
                 Foreground="Blue">
        Popup Text
      </TextBlock>
    </Popup>
  </StackPanel>
</Button>
<Button Name="ButtonForPopup" HorizontalAlignment="Left" 
        Click="CreatePopup"  
        Width="150" Margin="20,10,0,0">
  <StackPanel Name="aStackPanel">
    <TextBlock>Create Popup</TextBlock>
  </StackPanel>
</Button>

Controlli che implementano un controllo Popup

È possibile compilare controlli Popup in altri controlli. I controlli riportati di seguito implementano il controllo Popup per utilizzi specifici:

Comportamento e aspetto del controllo Popup

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

Comportamento di apertura e di chiusura

Un controllo Popup visualizza il relativo contenuto quando la proprietà IsOpen è impostata su true. Per impostazione predefinita, Popup resta aperto finché la proprietà IsOpen non viene impostata su false. Tuttavia, è possibile modificare il comportamento predefinito, impostando la proprietà StaysOpen su false. Quando questa proprietà viene impostata su false, la finestra del contenuto di Popup ha lo stato mouse capture. Il controllo Popup perde lo stato mouse capture e la finestra viene chiusa quando si verifica un evento del mouse fuori della finestra Popup.

Gli eventi Opened e Closed vengono generati quando si apre o chiude la finestra del contenuto di Popup.

Animazione

Il controllo Popup include il supporto incorporato per le animazioni generalmente associate a comportamenti quali dissolvenza in entrata e scorrimento in entrata. È possibile attivare queste animazioni impostando la proprietà PopupAnimation su un valore di enumerazione PopupAnimation. Affinché le animazioni Popup siano eseguite correttamente, la proprietà AllowsTransparency deve essere impostata su true.

È inoltre possibile applicare animazioni come Storyboard al controllo Popup. Per un esempio, vedere Esempio di controllo Popup animato.

Effetti di opacità e bitmap

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

Il contenuto di un Popup non eredita effetti bitmap, come ad esempio DropShadowBitmapEffect, che vengono impostati direttamente sul controllo Popup o su qualsiasi altro elemento della finestra padre. Per visualizzare gli effetti bitmap nel contenuto di un Popup, è necessario impostare l'effetto bitmap direttamente sul contenuto. Ad esempio, se l'elemento figlio di un Popup è un oggetto StackPanel, è necessario impostare l'effetto bitmap sull'oggetto StackPanel.

Dimensioni del controllo Popup

Per impostazione predefinita, le dimensioni del controllo Popup vengono definite automaticamente in base al contenuto. Quando viene eseguito il ridimensionamento automatico, alcuni effetti bitmap possono essere nascosti poiché le dimensioni predefinite dell'area dello schermo definite per il contenuto di Popup non forniscono spazio sufficiente per la visualizzazione degli effetti bitmap.

Il contenuto di Popup può anche essere oscurato quando viene impostato RenderTransform sul contenuto. In questo caso, parte del contenuto può essere nascosto se il contenuto di Popup trasformato si estende oltre l'area del Popup originale. Se un effetto bitmap o una trasformazione richiedono più spazio, è possibile definire un margine intorno al contenuto di Popup per fornire più area al controllo. Per ulteriori informazioni, compreso un esempio, vedere Esempio di controllo Popup animato.

Definizione della posizione di un controllo Popup

Per posizionare un popup, impostare le proprietà PlacementTarget, PlacementRectangle, Placement, HorizontalOffset e VerticalOffsetProperty. Per ulteriori informazioni, vedere Comportamento del controllo Popup in relazione al posizionamento. Quando il Popup viene visualizzato sullo schermo, non viene riposizionato se non viene riposizionato il relativo controllo padre.

Personalizzazione del posizionamento di un controllo Popup

Il posizionamento di un controllo Popup può essere personalizzato specificando una serie di coordinate relative al PlacementTarget in cui si desidera visualizzare il Popup.

Per personalizzare il posizionamento, impostare la proprietà Placement su Custom. Quindi, definire un delegato di CustomPopupPlacementCallback che restituisca una serie di possibili punti di posizionamento e assi primari (in ordine di preferenza) per il controllo Popup. Viene selezionato automaticamente il punto che visualizza la maggior parte del Popup. Per un esempio, vedere Procedura: specificare una posizione personalizzata per un controllo Popup.

Controllo Popup e struttura ad albero visuale

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

Il controllo Popup mantiene un riferimento al relativo contenuto di Child come elemento figlio logico. Quando si crea una nuova finestra, il contenuto di Popup diventa un elemento figlio visivo della finestra e resta il figlio logico del Popup. Viceversa, il Popup resta l'elemento padre logico del relativo contenuto di Child.

Vedere anche

Riferimenti

Popup

PopupPrimaryAxis

PlacementMode

CustomPopupPlacement

CustomPopupPlacementCallback

ToolTip

ToolTipService

Altre risorse

Procedure relative ai popup

Argomenti sulle procedure relative alle descrizioni comando

Esempi di Popup