This is a migrated thread and some comments may be shown as answers.

Annotation features

3 Answers 207 Views
ChartView
This is a migrated thread and some comments may be shown as answers.
Carlo
Top achievements
Rank 1
Carlo asked on 10 Sep 2013, 09:05 PM
Hello, a few questions about this feature:

1) Is it possible to show a tooltip on annotations?
2) Is it possible to have a click event (mousedown / mouseup should be fine too) on annotations to do something in response of a click?
3) Is it possible to update the way an annotation looks based on the mouse being over the annotation? I tried with style triggers but it didn't work.

Thanks!

3 Answers, 1 is accepted

Sort by
0
Petar Kirov
Telerik team
answered on 13 Sep 2013, 04:18 PM
Hi Carlo,

Thanks for contacting us.

1, 2, 3 - Yes, you just need to set the IsHitTestVisible property to true (all WPF mouse events are supported). 

 Here's an example:
<telerik:CartesianGridLineAnnotation Axis="{Binding ElementName=vAxis}" Value="30"
        StrokeThickness="4"
        ToolTip="This is a tooltip"
        IsHitTestVisible="True"
        MouseEnter="CartesianGridLineAnnotation_MouseEnter"
        MouseLeave="CartesianGridLineAnnotation_MouseLeave"
        MouseLeftButtonUp="CartesianGridLineAnnotation_MouseLeftButtonUp"/>
private void CartesianGridLineAnnotation_MouseEnter(object sender,
                                      MouseEventArgs e)
{
    var annotation = sender as CartesianGridLineAnnotation;
    annotation.StrokeThickness += 2;
 
}
 
private void CartesianGridLineAnnotation_MouseLeave(object sender,
                                      MouseEventArgs e)
{
    var annotation = sender as CartesianGridLineAnnotation;
    annotation.StrokeThickness -= 2;
}
 
private void CartesianGridLineAnnotation_MouseLeftButtonUp(object sender,
                                             MouseButtonEventArgs e)
{
    var annotation = sender as CartesianGridLineAnnotation;
    annotation.Effect = annotation.Effect == null ? new BlurEffect() : null;
}

I hope this helps.
 
Regards,
Petar Kirov
Telerik
TRY TELERIK'S NEWEST PRODUCT - EQATEC APPLICATION ANALYTICS for WPF.
Learn what features your users use (or don't use) in your application. Know your audience. Target it better. Develop wisely.
Sign up for Free application insights >>
0
Carlo
Top achievements
Rank 1
answered on 24 Sep 2013, 05:23 PM
Hello Petar, thanks for your reply.

They all worked except MouseLeftButtonUp, I tried both the tunnel (Preview) and bubbling strategies, but they did not do the trick. Also, I'm trying it in a CartesianCustomAnnotation and I'm creating them through code, I wonder if that makes a difference:

foreach (MyItem item in items)
            {
                CartesianCustomAnnotation customAnnotation = new CartesianCustomAnnotation
                {
                    HorizontalAxis = MyChartHorizontalAxis,
                    VerticalAxis = MyChartVerticalAxis,
                    HorizontalValue = item.StateChangedTime,
                    IsHitTestVisible = true,
                    Content = new Border()
                    {
                        Background = new SolidColorBrush(Colors.Red),
                        Child = new TextBlock
                        {
                            Text = "Completed Item"
                        }
                    },
                    Style = (Style)FindResource("CompletedWorkOrderAnnotationStyle")
                };
 
                MyChartControl.Annotations.Add(customAnnotation);
 
                customAnnotation.MouseLeftButtonUp += customAnnotation_MouseLeftButtonUp; // Doesn't work
                customAnnotation.MouseEnter += customAnnotation_MouseEnter;
                customAnnotation.MouseLeave += customAnnotation_MouseLeave;
            }
0
Petar Kirov
Telerik team
answered on 27 Sep 2013, 02:24 PM
Hi Carlo,

I believe that you have added a ChartPanAndZoomBehavior to the RadCartesianChart.Behaviors collection with its DragMode set to Pan or Zoom (default is Zoom). If that is so, the chart will capture some mouse events (used for panning or zooming) and as a consequence annotations will not receive them. 
To workaround this, you can use a combination of RadCartesianChart.MouseLeftButtonUp and the annotation.MouseLeftButtonDown (or only button down, if this is enough for you):
Point lastMouseLeftButtonDownPosition = new Point(-1, -1);
 
void customAnnotation_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    this.lastMouseLeftButtonDownPosition = e.GetPosition(this.chart);
}
 
void chart_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
    var pos = e.GetPosition(this.chart);
    var cp = this.customAnnotation.FindChildByType<ContentPresenter>();
    double left = Canvas.GetLeft(cp);
    double top = Canvas.GetTop(cp);
    double width = cp.ActualWidth;
    double height = cp.ActualHeight;
 
    //Ensure that lastMouseLeftButtonDownPosition is within the annotation rectangle
}

 

Regards,
Petar Kirov
Telerik
TRY TELERIK'S NEWEST PRODUCT - EQATEC APPLICATION ANALYTICS for WPF.
Learn what features your users use (or don't use) in your application. Know your audience. Target it better. Develop wisely.
Sign up for Free application insights >>
Tags
ChartView
Asked by
Carlo
Top achievements
Rank 1
Answers by
Petar Kirov
Telerik team
Carlo
Top achievements
Rank 1
Share this question
or