2011-09-06 55 views
5

Tôi đang sử dụng điều khiển WPF Popup. Tôi muốn nó xuất hiện bên trong cửa sổ ứng dụng của tôi, được neo ở góc dưới cùng bên phải của cửa sổ. Chiều cao thực tế và Chiều rộng của cửa sổ bật lên sẽ thay đổi tùy thuộc vào thông báo đang được hiển thị.Làm cách nào để tạo cửa sổ bật lên WPF xuất hiện ở góc dưới bên phải của ứng dụng?

Nếu nội dung quan trọng, nội dung của cửa sổ bật lên là Đường viền, bao quanh StackPanel, giữ nhiều TextBlocks.

Cảm ơn bạn đã được trợ giúp.

Trả lời

0

Điều này khá phức tạp và không có câu trả lời đơn giản. Về câu hỏi của bạn, bạn nêu:

Chiều cao thực tế và chiều rộng của cửa sổ bật lên sẽ thay đổi tùy thuộc vào thông điệp đang được hiển thị.

Bạn không nên lo lắng, đây là hành vi mặc định của điều khiển bật lên WPF.

Các bước để đảm bảo các vị trí bạn muốn trở thành là:

  1. Đặt PlacementTarget vào cửa sổ ứng dụng
  2. Các sổ popup sẽ được đặt sử dụng tương đối thay vì tuyệt đối, bởi vì vị trí bắt đầu luôn luôn là phía trên bên trái. Nhưng vị trí chính xác cũng liên quan đến cạnh ứng dụng của bạn, điều này có nghĩa là bạn phải sử dụng vị trí tùy chỉnh.

Để biết thêm thông tin về việc sử dụng vị trí tùy chỉnh của Popup, xem:

How to: Specify a Custom Popup Position

2

tôi chỉ làm một cái gì đó như thế này, và nó thực sự không phải là khó khăn, nhưng nó đòi hỏi vị trí tùy chỉnh của popup của bạn . Khi bạn khai báo popup của bạn chỉ cần đặt thuộc tính PlacementMode là Custom, sau đó thiết lập thuộc tính CustomPopupPlacementCallback thành phương thức bạn muốn sử dụng.

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

này anchores popup ở góc dưới bên phải của màn hình của bạn mà không nhất thiết phải góc dưới bên phải của cửa sổ của bạn. – sebingel

4

Sử dụng PlacementTarget, Vị trí = Left, ngang/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}"> 
Các vấn đề liên quan