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??
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.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With