2010-11-18 34 views
6

Tôi muốn thêm cửa sổ bật lên khi nhấp vào nút trong WPF. Tôi không muốn thêm mã Popup trong XAML của tôi. Nó phải là mã phía sau.Popup từ mã phía sau trong WPF không hoạt động (Trên thay đổi kích thước và chuyển đổi cửa sổ)

My XAML như sau ::

<Window x:Class="Test.Window1" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="Window1" Height="300" Width="300"> 
    <Grid> 
    <Button x:Name="button1" Click="button1_Click">Button</Button> 
    </Grid> 
</Window> 

tập tin XAML của tôi có một nút đơn giản. Khi nhấp vào nút, tôi đang cố gắng thực thi mã sau đây.

private void button1_Click(object sender, RoutedEventArgs e) 
    { 
     Button button = sender as Button; 

     Popup codePopup = new Popup(); 
     TextBlock popupText = new TextBlock(); 
     popupText.Text = "Popup Text"; 
     popupText.Background = Brushes.LightBlue; 
     popupText.Foreground = Brushes.Blue; 
     codePopup.Child = popupText; 

     codePopup.PlacementTarget = button; 
     codePopup.IsOpen = true; 

    } 

Nhưng tại sao là popup không gắn bản thân vào cửa sổ. Ý tôi là cửa sổ bật lên được hiển thị ngay cả khi tôi chuyển cửa sổ. Ngoài ra khi tôi đổi kích thước cửa sổ, Popup không còn được đặt gần nút nữa ??

Trả lời

4

bạn phải yêu cầu cửa sổ bật lên tự hiển thị.

codePopup.IsOpen = true; 

xem this blog để biết thêm thông tin.

[EDIT]
về cơ bản, cửa sổ bật lên của bạn không bị "gắn" (hoặc "sở hữu") bởi bất kỳ phụ huynh nào, không phụ thuộc vào bất kỳ cửa sổ và/hoặc kiểm soát nào khác. cách để giải quyết vấn đề này.

Bạn có thể tải xuống Mẫu Vị trí Popup từ MSDN here.

Mẫu mã sử dụng lớp CustomPopupPlacement với đối tượng Rect và liên kết với dời ngang và dọc để di chuyển Popup.

+0

Tôi đã thêm mãPopup.IsOpen = true; Cảm ơn làm việc của nó !! Nhưng tại sao cửa sổ bật lên không gắn nó vào cửa sổ. Ý tôi là cửa sổ bật lên được hiển thị ngay cả khi tôi chuyển cửa sổ. Ngoài ra khi tôi thay đổi kích thước cửa sổ, Popup không còn được đặt gần nút ?? – GuruC

+0

Cảm ơn rất nhiều :) – GuruC

+0

@GuruC, bạn đã bao giờ tìm ra cách tạo Popup theo lập trình nhưng có chính nó đúng cách để popup sẽ đóng khi bạn bấm vào bên ngoài nó? – t9mike

2

Nếu bạn muốn cửa sổ bật lên tự động đóng khi bạn nhấp vào bên ngoài, sau đó đặt codePopup.StaysOpen = falseVì vậy, nó sẽ đóng khi bạn nhấp vào bên ngoài.

Các vấn đề liên quan