2011-09-06 87 views
5

我正在使用WPF Popup控件。我希望它出現在我的應用程序窗口中,並錨定在窗口的右下角。彈出窗口的實際高度和寬度將根據正在顯示的消息而變化。如何使WPF彈出窗口出現在應用程序的右下角?

如果很重要,彈出窗口的內容是一個邊框,包裝一個StackPanel,包含多個TextBlocks。

謝謝你的幫助。

回答

0

這是非常棘手的,並沒有簡單的答案。 關於你的問題,你的狀態:

彈出窗口的實際寬度和高度將取決於正在顯示 消息改變。

你應該不用擔心,這是WPF Popup控件的默認行爲。

的步驟,以確保你想要的位置是:

  1. 將PlacementTarget應用程序窗口
  2. 彈出窗口將使用相對的而不是絕對的放置,因爲起始位置總是左上角。但確切位置也與應用程序的邊緣有關,這意味着您必須使用自定義位置。

有關使用彈出的自定義配置的詳細信息,請參閱:

How to: Specify a Custom Popup Position

2

我只是做了這樣的事情,這真的不是那麼靠譜,但它確實需要您的彈出自定義佈局。當聲明彈出窗口時,只需將PlacementMode屬性設置爲Custom,然後將CustomPopupPlacementCallback屬性設置爲您要使用的方法。

this.trayPopup.CustomPopupPlacementCallback = GetPopupPlacement; 

private static CustomPopupPlacement[] GetPopupPlacement(Size popupSize, Size targetSize, Point offset) 
{ 
    var point = SystemParameters.WorkArea.BottomRight; 
    point.Y = point.Y - popupSize.Height; 
    return new[] { new CustomPopupPlacement(point, PopupPrimaryAxis.Horizontal) }; 
} 
+0

這anchores在顯示器的右下角這不一定是你的窗口的右下角彈出。 – sebingel

4

使用PlacementTarget,佈局=左,水平/ VerticalOffset

<Popup IsOpen="{Binding ElementName=togglebutton, Path=IsChecked, Mode=TwoWay}" 
     PlacementTarget="{Binding ElementName=togglebutton}" 
     Placement="Left" 
     HorizontalOffset="{Binding ActualWidth, ElementName=togglebutton}" 
     VerticalOffset="{Binding ActualHeight, ElementName=togglebutton}"> 
相關問題