How to change tooltip duration?

7 posts, 0 answers
  1. Wenjie
    Wenjie avatar
    35 posts
    Member since:
    Mar 2013

    Posted 10 Feb 2014 Link to this post

    Hi All,

    How to change tooltip duration? My code like this:
    <DataTemplate x:Key="ToolTipTemplate">
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition />
                <RowDefinition />
                <RowDefinition />
                <RowDefinition />
            </Grid.RowDefinitions>
            <StackPanel Grid.Row="0" Orientation="Horizontal">
                <TextBlock Text="Subject: " />
                <TextBlock Text="{Binding Subject}" TextWrapping="Wrap"  FontWeight="Bold" />
            </StackPanel>
            <StackPanel Grid.Row="1" Orientation="Horizontal">
                <TextBlock Text="Body: " />
                <TextBlock Text="{Binding Body}" TextWrapping="Wrap" />
            </StackPanel>
            <StackPanel Grid.Row="2" Orientation="Horizontal">
                <TextBlock Text="Location: " />
                <TextBlock Text="{Binding Appointment.Resources[0].ResourceName}" />
            </StackPanel>
            <StackPanel Grid.Row="3" Margin="0 5 0 0">
                <StackPanel Orientation="Horizontal" Margin="0 0 0 0">
                    <TextBlock Text="{Binding Start, StringFormat='hh:mm tt'}" TextWrapping="Wrap" FontSize="10" />
                    <TextBlock Text=" - " FontSize="10" />
                    <TextBlock Text="{Binding End, StringFormat='hh:mm tt'}" TextWrapping="Wrap" FontSize="10" />
                </StackPanel>
                <TextBlock Text="{Binding Start, StringFormat='dddd dd MMM yyyy'}" Margin="0 3" FontSize="10" />
            </StackPanel>
        </Grid>
    </DataTemplate>
    .....
    <telerik:RadScheduleView ToolTipTemplate="{StaticResource ToolTipTemplate}" ... >
        ...
    </telerik:RadScheduleView>
  2. Kalin
    Admin
    Kalin avatar
    1208 posts

    Posted 11 Feb 2014 Link to this post

    Hello Wenjie,

    In order to change the ToolTip duration you can use the approach explained in this forum post.

    You can give it a try and let us know if you have any further questions.

    Regards,
    Kalin
    Telerik

    Check out the new Telerik Platform - the only modular platform that combines a rich set of UI tools with powerful cloud services to develop web, hybrid and native apps. Register for the free online keynote and webinar to learn more about the Platform on Wednesday, February 12, 2014 at 11:00 a.m. ET (8:00 a.m. PT).

  3. UI for WPF is Visual Studio 2017 Ready
  4. Andrew
    Andrew avatar
    3 posts
    Member since:
    Aug 2012

    Posted 23 Mar 2015 in reply to Kalin Link to this post

    Is there a way to set the duration in the code behind such as when the tool tip's value is set?

    Ideally, I would like the tool tip to stay open as long as the cursor is over the MapPolygon.  This is similar to this question (http://www.telerik.com/forums/tooltip-open-automatically-and-click-event) but that applies to a Pushpin, not a MapPolygon.  The MapPolygon's ToolTip does not have an IsOpen property.

    I have a tooltip that has about 20 lines of information and this is essentially impossible to read in the time the tooltip is open.

    Andrew
  5. Martin
    Admin
    Martin avatar
    1101 posts

    Posted 24 Mar 2015 Link to this post

    Hello Andrew,

    I am afraid you cannot change the duration of the MapPolygon's tooltip. The MapPolygon is just a wrapper that describes the shape (a Polygon element in this case) which will be rendered on the map. The created visual element is not bound to the ToolTipService which leads to this limitation.

    To achieve your requirement you can use several approaches:
    • Use data binding and set the tooltip and tooltip duration on the elements in the InformationLayer's ItemTemplate through the ToolTipService. 
    • Use FrameworkElements directly in the Items collection of the layer instead of MapShapes
    • Consider using the new VisualizationLayer and the map shape data objects. Basically, you can subscribe for the MapShapeVisualizationCreated event of the VisualizationLayer and inside its handler set a tooltip and its duration on the shape's visual element through the ToolTipService. Here is an example:
      private void visualizationLayer_MapShapeVisualizationCreated(object sender, MapShapeOperationEventArgs e)
      {
          var toolTip = e.Data.Location;
          ToolTipService.SetToolTip(e.Visualization, toolTip);
          ToolTipService.SetShowDuration(e.Visualization, 30000);
      }


    Also, note that the map control provides two rendering engine packs - the old one consists of the the InformationLayer, VirtualizationLayer and DynamicaLayer. The new one is implemented through the VisualizationLayer which brings better performance, additional features and allows reading of shapes from different sources (KML, ESRI, and SQL Geospatial).

    I hope this information helps.

    Regards,
    Martin
    Telerik
     

    See What's Next in App Development. Register for TelerikNEXT.

     
  6. Andrew
    Andrew avatar
    3 posts
    Member since:
    Aug 2012

    Posted 24 Mar 2015 in reply to Martin Link to this post

    None of these options seems to work for me.

    Using binding, I can set the ToolTip but not the Duration.  Both of the examples below do not work and I can't seem to find an element or attribute that would allow setting the duration.  Duration isn't an attribute of the ToolTip element either.
    <ToolTipService.ToolTip>
       
    <ToolTip Content="{Binding PropertiesAsText}"/>
        <Duration>30000</Duration>
    </ToolTipService.ToolTip>

    <ToolTipService.ToolTip>
       
    <ToolTip Content="{Binding PropertiesAsText}"/>
        <ShowDuration>30000</ShowDuration>
    </ToolTipService.ToolTip>

    I'm not sure how using FrameworkElements would help since the layer is a collection of polygons (hence the use of MapPolygons).  Would I need to create my own class that inherits from FrameworkElements and write the drawing methods from scratch?

    I am using the VisualizationLayer and MapPolygon objects but the Visualization layer doesn't seem to have a MapShapeVisualizationCreated event so the example you gave is never fired.  Both <telerik:VirtualizationLayer.MapShapeVisualizationCreated> and <telerik:VirtualizationLayer MapShapeVisualizationCreated="visualizationLayer_MapShapeVisualizationCreated"/> will not compile.

    How can I tell if I'm using the "new" rendering engine pack or the "old' one?  We're using WPF_2014_1.

  7. Andrew
    Andrew avatar
    3 posts
    Member since:
    Aug 2012

    Posted 24 Mar 2015 in reply to Andrew Link to this post

    Sorry, I missed the VirtualizationLayer vs. VisualizationLayer.  I'm using VirtualizationLayer,  I see there are several articles on using the VisualizationLayer but before I go to the trouble of re-writing all my map related code, will this even help with the problem of the ToolTip that  I've been struggling with for a couple of days now?

    If I make this change, can I control the ToolTip and make it stay open (open on mouse enter and close on mouse exit)?

    One advantage I see is that creating the MapPolygons wasn't possible in the background process with the VirtualizationLayer (another few days wasted trying to get this to work) so I could eliminate the hacks I had to put into place to get this to work.  I'll look into making this switch but if you could help with the ToolTip problem that would be great.
  8. Martin
    Admin
    Martin avatar
    1101 posts

    Posted 26 Mar 2015 Link to this post

    Hi Andrew,

    I attached a sample project demonstrating the map's VisualizationLayer populated with several polygon Framework and MapPolygonData elements. Each element have a tooltip that is displayed for some time - 1800000 milliseconds (30 minutes) in the attached example. This will ensure that the tooltip will be opened enough time so that it looks like it is always opened. About showing/hiding on mouse enter/leave, this behavior is built-int in the WPF's tooltip and you won't need to implement logic for this.

    In addition I added a custom implementation that keeps open the tooltip even if the ShowDuration time is up. This logic is based on the approach used in the forum that you referenced to several replies back.

    Please take a look at the project and let me know if it helps. Also, I would ask you to open a new forum (or a support ticket) in the corresponding section (RadMap in your case) if you have any questions that are not related to the current topic about the RadScheduleView.

    Regards,
    Martin
    Telerik
     

    See What's Next in App Development. Register for TelerikNEXT.

     
Back to Top
UI for WPF is Visual Studio 2017 Ready