Popup from code behind in WPF not working ( On resize and switching windows)
Asked Answered
N

2

9

I want to add a popup on click of a Button in WPF. I dont want to add Popup code in my XAML. It has to be code behind.

My XAML is as follows::

<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>

My XAML file has a simple button. On click of Button, I am trying to execute the following code.

  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;

    }

But why is the popup not attaching itself to the window. I mean the popup is displayed even if I switch windows. Also when I resize window, Popup is no longer placed near button??

Neb answered 18/11, 2010 at 5:59 Comment(0)
D
4

you have to tell the popup to display itself, too.

codePopup.IsOpen = true;

see this blog for a bit more info.

[EDIT]
basically, your popup is not "tied" (or "owned") by any parent, it is independent of any other window and/or control (etc.) Unfortunatly, there is not any easy way to get around this.

You should probably download the Popup Position Sample from MSDN here.

The code sample uses the class CustomPopupPlacement with a Rect object, and binds to horizontal and vertical offsets to move the Popup.

Dialogist answered 18/11, 2010 at 6:2 Comment(3)
I added codePopup.IsOpen = true; Thanks its working!! But why is the popup not attaching itself to the window. I mean the popup is displayed even if I switch windows. Also when I resize window, Popup is no longer placed near button??Neb
@GuruC, did you ever figure out how to create Popup programmatically but have it root itself properly so that popup will close when you click outside it?Istic
that sample download is broken, a commenter there says to see msdn.microsoft.com/en-us/library/bb625938.aspx, but that one is missing a download link!Vidar
U
2

If you want popup should close automatically when you click outside of it then set codePopup.StaysOpen = false.So that it will close when you click outside of it.

Uropygium answered 9/12, 2013 at 9:10 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.