c# - WPF: Custom tooltip arrow placement -


i have custom tooltip style creates nice black tooltip arrow pointing location of item hovered over.

the problem tooltip not placed in correct location (i.e. near window edges) means tooltip arrow no longer points @ correct place... there anyway around problem? or can create specific styles each location placement?

<style x:key="{x:type tooltip}" targettype="tooltip">     <setter property="overridesdefaultstyle" value="true"/>     <setter property="hasdropshadow" value="true"/>     <setter property="template">         <setter.value>             <controltemplate targettype="tooltip">                 <stackpanel>                     <border cornerradius="3" horizontalalignment="center" verticalalignment="top" padding="10,7" borderthickness="0" background="#e5323232">                         <stackpanel>                             <textblock fontfamily="arial" fontsize="12" text="{templatebinding content}" foreground="#f0f0f0" />                         </stackpanel>                     </border>                     <path margin="10,0,0,0" fill="#e5323232" data="m 0 0 l 6 6 l 12 0 z"/>                 </stackpanel>             </controltemplate>         </setter.value>     </setter> 

maybe try this, set placement center , added horizontaloffset match arrow created in template.

however wont center vertically on control, make ivalueconverter , calculate size of control , divide 2, or add dummy element stackpanel same size border, , should center tooltip without needing code behind

<style x:key="{x:type tooltip}" targettype="tooltip">         <setter property="overridesdefaultstyle" value="true"/>         <setter property="hasdropshadow" value="true"/>         <setter property="placement" value="center" />         <!--offset arrow path-->         <setter property="horizontaloffset" value="15"/>         <setter property="template">             <setter.value>                 <controltemplate targettype="tooltip">                     <stackpanel>                         <border x:name="border" cornerradius="3" horizontalalignment="center" verticalalignment="top" padding="10,7" borderthickness="0" background="#e5323232">                             <stackpanel>                                 <textblock fontfamily="arial" fontsize="12" text="{templatebinding content}" foreground="#f0f0f0" />                             </stackpanel>                         </border>                         <path margin="10,0,0,0" fill="#e5323232" data="m 0 0 l 6 6 l 12 0 z"/>                          <!--dummy rectangle same height tool tip, centers on control-->                         <rectangle height="{binding actualheight, elementname=border}" />                     </stackpanel>                 </controltemplate>             </setter.value>         </setter>     </style> 

Comments

Popular posts from this blog

jquery - How can I dynamically add a browser tab? -

node.js - Getting the socket id,user id pair of a logged in user(s) -

keyboard - C++ GetAsyncKeyState alternative -