快顯功能表概觀

控制項 Popup 提供一種方式,在與指定的專案或螢幕座標相對的目前應用程式視窗上浮動的個別視窗中顯示內容。 本主題介紹 控制項, Popup 並提供其使用的相關資訊。

什麼是快顯?

Popup控制項會在與畫面上的專案或點相對的不同視窗中顯示內容。 Popup當 可見時, IsOpen 屬性會設定為 true

注意

Popup當滑鼠指標移至其父物件上方時,不會自動開啟 。 如果您想要 Popup 自動開啟 ,請使用 ToolTipToolTipService 類別。 如需詳細資訊,請參閱 ToolTip 概觀

建立快顯

下列範例示範如何定義 Popup 控制項,該控制項是 控制項的 ToggleButton 子專案。 ToggleButton因為 只能有一個子專案,因此這個範例會將 和 控制項的 Popup 文字 ToggleButton 放在 中 StackPanel 。 的內容 Popup 會顯示在位於相關 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>

實作快顯的控制項

您可以將控制項建置 Popup 至其他控制項。 下列控制項會 Popup 針對特定用途實作 控制項:

控制項 Popup 提供的功能可讓您自訂其行為和外觀。 例如,您可以設定開啟和關閉行為、動畫、不透明度和點陣圖效果,以及 Popup 大小和位置。

開啟和關閉行為

Popup當 屬性設定為 true 時, IsOpen 控制項會顯示其內容。 根據預設, Popup 會保持開啟狀態, IsOpen 直到 屬性設定為 false 為止。 不過,您可以將 屬性設定 StaysOpenfalse ,以變更預設行為。 當您將此屬性設定為 false 時, Popup 內容視窗會擷取滑鼠。 失去 Popup 滑鼠擷取,當滑鼠事件發生在 Popup 視窗外時,視窗就會關閉。

Opened 內容視窗開啟或關閉時 Popup ,會引發 和 Closed 事件。

動畫

控制項 Popup 內建支援通常與淡入和投影片等行為相關聯的動畫。 您可以將 屬性設定 PopupAnimation 為列舉值,以 PopupAnimation 開啟這些動畫。 若要 Popup 讓動畫正常運作,您必須將 AllowsTransparency 屬性設定為 true

您也可以將之類的 Storyboard 動畫套用至 Popup 控制項。

不透明度和點陣圖效果

Opacity控制項的 Popup 屬性對其內容沒有任何影響。 根據預設, Popup 內容視窗不透明。 若要建立透明 Popup ,請將 AllowsTransparency 屬性設定為 true

的內容 Popup 不會繼承點陣圖效果,例如 DropShadowBitmapEffect ,您直接在控制項上或父視窗中的任何其他專案上設定 Popup 。 若要讓點陣圖效果出現在 的內容 Popup 上,您必須直接在其內容上設定點陣圖效果。 例如,如果 的 Popup 子系是 StackPanel ,請在 上 StackPanel 設定點陣圖效果。

根據預設, Popup 會自動調整其內容的大小。 自動調整大小時,可能會隱藏某些點陣圖效果,因為為 Popup 內容定義的螢幕區域的預設大小沒有提供足夠的空間,無法顯示點陣圖效果。

Popup 當您在內容上設定 RenderTransform 時,也可以遮蔽內容。 在此案例中,如果轉換 Popup 的內容超出原始 Popup 的區域,可能會隱藏某些內容。 如果點陣圖效果或轉換需要更多空間,您可以定義內容周圍的 Popup 邊界,以提供更多控制項的區域。

定義快顯位置

您可以藉由設定 PlacementTargetPlacementRectanglePlacementHorizontalOffsetVerticalOffsetProperty 屬性來放置快顯。 如需詳細資訊,請參閱快顯放置行為。 當在螢幕上顯示時 Popup ,如果重新置放其父系,它就不會重新置放本身。

自訂快顯位置

您可以指定一組相對於 PlacementTarget 您要 Popup 顯示 之 的座標,來自訂控制項的位置 Popup

若要自訂放置,請將 Placement 屬性設定為 Custom 。 然後定義 CustomPopupPlacementCallback 委派,其傳回一組 Popup可能的放置點與主軸 (以偏好順序)。 顯示 最大部分的 Popup 點會自動選取。 如需範例,請參閱指定自訂快顯位置

Popup控制項沒有自己的視覺化樹狀結構,而是在呼叫 的 方法 PopupMeasureOverride 傳回 0 (零) 的大小。 不過,當您將 IsOpenPopup 屬性設定為 true 時,會建立具有其本身視覺化樹狀結構的新視窗。 新的視窗包含 Child 的內容 Popup 。 新視窗的寬度和高度不可超過畫面寬度或高度的 75%。

控制項 Popup 會維護其 Child 內容的參考做為邏輯子系。 建立新視窗時,的內容 Popup 會變成視窗的視覺子系,並保留 的 Popup 邏輯子系。 相反地, Popup 仍然是其 Child 內容的邏輯父代。

另請參閱