<Window
    x:Class="NotifyIconWpf.Sample.ShowCases.Tutorials.DataBoundToolTipWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:tb="http://www.hardcodet.net/taskbar"
    Height="300"
    Width="500"
    >
    <Grid>

        <!--  the ToolTipText property is bound to the TextBox below  -->
        <tb:TaskbarIcon
            x:Name="MyNotifyIcon1"
            IconSource="/Icons/Error.ico"
            ToolTipText="{Binding ElementName=TxtToolTip, Path=Text}"
            >

            <!--
                The TextBlock bound to the ToolTipText property of the NotifyIcon
                The binding is implicit (using DataContext)
            -->
            <tb:TaskbarIcon.TrayToolTip>
                <Border
                    Background="White"
                    BorderBrush="Orange"
                    BorderThickness="2"
                    CornerRadius="4"
                    Opacity="0.8"
                    Width="160"
                    Height="40"
                    >
                    <TextBlock
                        Text="{Binding Path=ToolTipText}"
                        HorizontalAlignment="Center"
                        VerticalAlignment="Center"
                        />
                </Border>
            </tb:TaskbarIcon.TrayToolTip>

        </tb:TaskbarIcon>


        <!--  This NotifyIcon has its DataContext set (just the string "WPF FTW") - implicit binding is no longer possible  -->
        <tb:TaskbarIcon
            x:Name="MyNotifyIcon2"
            DataContext="WPF FTW "
            IconSource="/Icons/Inactive.ico"
            ToolTipText="{Binding ElementName=TxtToolTip, Path=Text}"
            >

            <tb:TaskbarIcon.TrayToolTip>

                <!--
                    Important: The attached property is assigned to the border, but derived by all controls.
                    The NotifyIcon does not touch the underlying controls.
                -->
                <Border
                    Background="White"
                    BorderBrush="Orange"
                    BorderThickness="2"
                    CornerRadius="4"
                    Opacity="0.8"
                    Width="160"
                    Height="40"
                    >
                    <!--  Implicitly access the DataContext (which is a string this time)  -->
                    <TextBlock Text="{Binding}">
                        <!--  Explicitly access the NotifyIcon, as it is an attached property  -->
                        <TextBlock
                            Text="{Binding RelativeSource={RelativeSource Self}, Path=(tb:TaskbarIcon.ParentTaskbarIcon).ToolTipText}"
                            HorizontalAlignment="Center"
                            VerticalAlignment="Center"
                            />
                    </TextBlock>
                </Border>
            </tb:TaskbarIcon.TrayToolTip>

        </tb:TaskbarIcon>


        <TextBlock
            Margin="26,26,24,0"
            VerticalAlignment="Top"
            TextWrapping="Wrap"
            FontWeight="Bold"
            >
            <Run Text="This sample shows data bound ToolTips in two flavors" /><LineBreak /><Run Text="" />
            <LineBreak /><Run Text="- implicit binding via DataContext" /><LineBreak />
            <Run Text="- explicit binding via ParentTaskbarIcon (attached property)" /><LineBreak /><Run Text="" />
            <LineBreak /><Run Text="Move over NotifyIcons (grey / red) to show data bound ToolTip" />
        </TextBlock>
        <TextBox
            Margin="26,0,24,10"
            Text="hello world"
            TextWrapping="Wrap"
            x:Name="TxtToolTip"
            Height="25"
            VerticalAlignment="Bottom"
            />
        <TextBlock
            Margin="26,0,125,45"
            VerticalAlignment="Bottom"
            Height="26"
            TextWrapping="Wrap"
            >
            <Run Text="ToolTipText:" />
        </TextBlock>

    </Grid>
</Window>