Popup positioning in wpf using c# Popup positioning in wpf using c# wpf wpf

Popup positioning in wpf using c#


use this style for your Popup:

<Style TargetType="Popup">                <Style.Triggers>                    <Trigger Property="IsOpen" Value="true">                        <Setter Property="PlacementTarget" Value="{Binding ElementName=btnH }" />                        <Setter Property="Placement" Value="Top" />                        <Setter Property="VerticalOffset" Value="-5" />                        <Setter Property="HorizontalOffset" Value="5" />                    </Trigger>                </Style.Triggers>            </Style>


I think that Kylo pointed you to the right answer. If you get rid of the margin in the usercontrol it should work.

This is the code for the usercontrol.

<UserControl         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"          xmlns:d="http://schemas.microsoft.com/expression/blend/2008"          xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation" x:Class="WpfTest.UCToolTip"          mc:Ignorable="d" Height="130" Width="180"         Background="Transparent"  >    <UserControl.Resources>        <Style TargetType="{x:Type Hyperlink}">            <Setter Property="TextBlock.TextDecorations" Value="{x:Null}" />        </Style>    </UserControl.Resources>    <Grid Margin="10,0,0,0">        <Grid.RowDefinitions>            <RowDefinition/>            <RowDefinition Height="Auto"/>        </Grid.RowDefinitions>        <Grid Background="red" Margin="0,0,0,32">        </Grid>        <Polygon Points="0.5,0 15,0, 0,30" Stroke="Orange" Fill="Orange" Margin="0,98,0,0" />    </Grid></UserControl>

And the code for the window.

<Window x:Class="WpfTest.MainWindow"        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"        xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"        xmlns:uc="clr-namespace:WpfTest"        Title="MainWindow" Height="350" Width="525">    <Window.Resources>        <Style TargetType="Popup">            <Style.Triggers>                <Trigger Property="IsOpen" Value="true">                    <Setter Property="PlacementTarget" Value="{Binding ElementName=btnH }" />                    <Setter Property="Placement" Value="Top" />                    <Setter Property="VerticalOffset" Value="0" />                    <Setter Property="HorizontalOffset" Value="145" />                </Trigger>            </Style.Triggers>        </Style>            </Window.Resources>        <Grid>        <telerik:RadButton Name="btnH" Grid.Column="1" HorizontalAlignment="Left" Margin="300,175,0,0" Grid.Row="2" VerticalAlignment="Top"                  Width="50" Height="23" BorderThickness="6" BorderBrush="#4E4E4E">            <Image Source="Images/help.png" />            <telerik:RadButton.Triggers>                <EventTrigger RoutedEvent="MouseEnter">                    <BeginStoryboard>                        <Storyboard TargetName="TooltipPopup" TargetProperty="IsOpen">                            <BooleanAnimationUsingKeyFrames  FillBehavior="HoldEnd">                                <DiscreteBooleanKeyFrame KeyTime="00:00:00"  Value="True" />                            </BooleanAnimationUsingKeyFrames>                        </Storyboard>                    </BeginStoryboard>                </EventTrigger>                <EventTrigger RoutedEvent="MouseLeave">                    <BeginStoryboard>                        <Storyboard TargetName="TooltipPopup" TargetProperty="IsOpen">                            <BooleanAnimationUsingKeyFrames  FillBehavior="HoldEnd">                                <DiscreteBooleanKeyFrame KeyTime="00:00:00"  Value="False" />                            </BooleanAnimationUsingKeyFrames>                        </Storyboard>                    </BeginStoryboard>                </EventTrigger>            </telerik:RadButton.Triggers>        </telerik:RadButton>        <Popup x:Name="TooltipPopup" AllowsTransparency="True">            <StackPanel>                <uc:UCToolTip></uc:UCToolTip>            </StackPanel>        </Popup>    </Grid></Window>


Here is a small library with balloons for WPF that I think does what you want.

Usage:

<geometry:Balloon ConnectorAngle="25"                  CornerRadius="15"                  PlacementOptions="Bottom, Center"                  PlacementTarget="{Binding ElementName=Target}">     <!--  content here  --></geometry:Balloon>