Hi,
I am using a tooltip template in Rad Cartesian Chart View for ScatterSplineSeries. I defined Point Template and tooltip template and able to display X & Y Values. I want to Display the Horizontal Axis Title along with X value and Vertical Axis Title with Y Value. Also I would like to display the spline name too. Somehow I am not able to display the contents. I read in telreik about DataItem property of DataPoint class and even tried using it but unsuccessful .Here is my XAML and View Model.
<telerik:RadCartesianChart x:Name="CartesianChart" Visibility="Visible" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" Style="{StaticResource RadCartesianChartStyle1}"> <telerik:RadCartesianChart.Grid> <telerik:CartesianChartGrid MajorLinesVisibility="XY" MajorXLineStyle="{StaticResource GridLineStyle}" MajorYLineStyle="{StaticResource GridLineStyle}" /> </telerik:RadCartesianChart.Grid> <telerik:RadCartesianChart.HorizontalAxis> <telerik:LinearAxis Title="{Binding HorizontalAxisTitle}" Minimum="0" Maximum="35" LineThickness="2" LineStroke="Transparent" Foreground="{DynamicResource BRUSH_TEXT}" Style="{StaticResource LinearAxisStyle}" /> </telerik:RadCartesianChart.HorizontalAxis> <telerik:RadCartesianChart.VerticalAxis> <telerik:LinearAxis Minimum="0" Maximum="120" Title="{Binding VerticalAxisTitle}" LineThickness="2" Foreground="{DynamicResource BRUSH_TEXT}" Style="{StaticResource LinearAxisStyle}" /> </telerik:RadCartesianChart.VerticalAxis> <telerik:RadCartesianChart.Behaviors> <telerik:ChartPanAndZoomBehavior DragMode="Pan" ZoomMode="Both" PanMode="Both" /> <telerik:ChartTooltipBehavior /> </telerik:RadCartesianChart.Behaviors> <telerik:RadCartesianChart.SeriesProvider> <telerik:ChartSeriesProvider x:Name="ChartSeriesProvider" Source="{Binding SplineCollection}"> <telerik:ChartSeriesProvider.SeriesDescriptors> <telerik:ScatterSeriesDescriptor ItemsSourcePath="Points" YValuePath="YValue" XValuePath="XValue"> <telerik:ScatterSeriesDescriptor.Style> <Style TargetType="telerik:ScatterSplineSeries"> <Setter Property="StrokeThickness" Value="{Binding StrokeThickness}" /> <Setter Property="Stroke" Value="{Binding Color}" /> <Setter Property="TooltipTemplate"> <Setter.Value> <DataTemplate> <Border Background="{DynamicResource BRUSH_TOOLTIP}" BorderBrush="{DynamicResource BRUSH_TOOLTIP}" BorderThickness="1" Padding="10"> <StackPanel Background="{DynamicResource BRUSH_TOOLTIP}"> <StackPanel Width="{TemplateBinding Width}" Orientation="Horizontal" Background="{DynamicResource BRUSH_TOOLTIP}" Margin="5"> <TextBlock Text="{Binding DataItem.VerticalAxisTitle}" /> <TextBlock Text="{Binding YValue}" /> </StackPanel> <StackPanel Width="{TemplateBinding Width}" Orientation="Horizontal" Background="{DynamicResource BRUSH_TOOLTIP}" Margin="5"> <TextBlock Text="{Binding DataItem.HorizontalAxisTitle}" /> <TextBlock Text="{Binding XValue}" /> </StackPanel> <TextBlock Text="{Binding DataItem.Name}" /> </StackPanel> </Border> </DataTemplate> </Setter.Value> </Setter> <Setter Property="PointTemplate"> <Setter.Value> <DataTemplate> <Ellipse Width="20" Height="20" Fill="{DynamicResource BRUSH_SELECTION}" /> </DataTemplate> </Setter.Value> </Setter> <Style.Triggers> <DataTrigger Binding="{Binding IsDashed}" Value="True"> <Setter Property="DashArray" Value="5" /> </DataTrigger> </Style.Triggers> </Style> </telerik:ScatterSeriesDescriptor.Style> </telerik:ScatterSeriesDescriptor> </telerik:ChartSeriesProvider.SeriesDescriptors> </telerik:ChartSeriesProvider> </telerik:RadCartesianChart.SeriesProvider> </telerik:RadCartesianChart>
ViewModels
public class MainViewModel : ViewModelBase { public string HorizontalAxisTitle { get; set; } public string VerticalAxisTitle { get; set; } public ObservableCollection<SplineSeries> SplineCollection { get; set; } public MainViewModel() { HorizontalAxisTitle = string.Format("{0}", "Grey Value"); VerticalAxisTitle = string.Format("{0}", "Volume"); this.SplineCollection = GetSplineCollection(); } private ObservableCollection<SplineSeries> GetSplineCollection() { var result = new ObservableCollection<SplineSeries> { new SplineSeries() { Color = new SolidColorBrush(Colors.Red), StrokeThickness = 2, Name = "Structure1", Points = new ObservableCollection<Data>() { new Data() {XValue = 0, YValue = 100}, new Data() {XValue = 5, YValue = 100}, new Data() {XValue = 9, YValue = 90}, new Data() {XValue = 10, YValue = 50}, new Data() {XValue = 20, YValue = 80}, new Data() {XValue = 25, YValue = 60}, new Data() {XValue = 30, YValue = 0} } }, new SplineSeries() { Color = new SolidColorBrush(Colors.Orange), IsDashed = true, StrokeThickness = 2, Name = "Structure2", Points = new ObservableCollection<Data>() { new Data() {XValue = 0, YValue = 100}, new Data() {XValue = 5, YValue = 100}, new Data() {XValue = 10, YValue = 50}, new Data() {XValue = 20, YValue = 0} } } }; return result; }
public class SplineSeries : ViewModelBase
{
private SolidColorBrush myBrush = new SolidColorBrush( Colors.OrangeRed );
public SolidColorBrush Color
{
get { return myBrush; }
set { myBrush = value; }
}
public string Name { get; set; }
public double StrokeThickness { get; set; }
public bool IsDashed { get; set; }
public ObservableCollection<Data> Points { get; set; }
}
public class Data:ViewModelBase
{
public double XValue { get; set; }
public double YValue { get; set; }
}
How do I acheive this. Kindly Help me