I have a chart that has two plots on it. I also have a ribbon bar with a few buttons that I'd like to use to control the pan and zoom behaviors of the chart. I'd like to accomplish this exclusively in the XAML file using data triggers. Please excuse the long code snip, but I'd like to provide a complete picture.
001.
<
Grid
>
002.
<
TabControl
ItemsSource
=
"{Binding TotalGradeProfile}"
>
003.
004.
<
TabControl.ItemTemplate
>
005.
<
DataTemplate
>
006.
<
TextBlock
Text
=
"{Binding Name}"
/>
007.
</
DataTemplate
>
008.
</
TabControl.ItemTemplate
>
009.
010.
<
TabControl.ContentTemplate
>
011.
<
DataTemplate
>
012.
<
Grid
>
013.
<
Grid.RowDefinitions
>
014.
<
RowDefinition
Height
=
"Auto"
/>
015.
<
RowDefinition
Height
=
"*"
/>
016.
</
Grid.RowDefinitions
>
017.
018.
<
Grid.ColumnDefinitions
>
019.
<
ColumnDefinition
Width
=
"*"
/>
020.
<
ColumnDefinition
Width
=
"Auto"
/>
021.
</
Grid.ColumnDefinitions
>
022.
023.
<
Ribbon
Grid.Row
=
"0"
024.
Grid.ColumnSpan
=
"2"
>
025.
026.
<
RibbonTab
Header
=
"Home"
KeyTip
=
"H"
>
027.
<
RibbonGroup
x:Name
=
"ZoomAndPanGroup"
028.
Header
=
"Zoom and Pan"
>
029.
030.
<
RibbonButton
Label
=
"Zoom"
031.
Name
=
"zoomButton"
/>
032.
033.
<
RibbonButton
Label
=
"Pan"
034.
Name
=
"panButton"
/>
035.
</
RibbonGroup
>
036.
</
RibbonTab
>
037.
</
Ribbon
>
038.
039.
<
telerik:RadCartesianChart
x:Name
=
"gradePlot"
040.
Grid.Row
=
"1"
041.
Grid.Column
=
"0"
042.
Margin
=
"2"
>
043.
044.
<
telerik:RadCartesianChart.Behaviors
>
045.
<
telerik:ChartTrackBallBehavior
ShowIntersectionPoints
=
"True"
046.
ShowTrackInfo
=
"True"
047.
SnapMode
=
"AllClosePoints"
/>
048.
049.
<
telerik:ChartPanAndZoomBehavior
ZoomMode
=
"Both"
050.
PanMode
=
"None"
051.
x:Name
=
"zoomBehavior"
/>
052.
053.
</
telerik:RadCartesianChart.Behaviors
>
054.
055.
<
telerik:RadCartesianChart.HorizontalAxis
>
056.
<
telerik:LinearAxis
SmartLabelsMode
=
"SmartStepAndRange"
057.
IsStepRecalculationOnZoomEnabled
=
"True"
058.
RangeExtendDirection
=
"None"
/>
059.
</
telerik:RadCartesianChart.HorizontalAxis
>
060.
061.
<
telerik:RadCartesianChart.VerticalAxis
>
062.
<
telerik:LinearAxis
SmartLabelsMode
=
"SmartStepAndRange"
063.
IsStepRecalculationOnZoomEnabled
=
"True"
064.
RangeExtendDirection
=
"None"
/>
065.
</
telerik:RadCartesianChart.VerticalAxis
>
066.
067.
<!-- Plot 1 -->
068.
<
telerik:ScatterSplineSeries
XValueBinding
=
"Mp"
069.
YValueBinding
=
"RegionGrade"
070.
ItemsSource
=
"{Binding GradeProfiles}"
071.
Stroke
=
"Blue"
072.
StrokeThickness
=
"1"
>
073.
074.
<
telerik:ScatterSplineSeries.LegendSettings
>
075.
<
telerik:SeriesLegendSettings
Title
=
"Region"
/>
076.
</
telerik:ScatterSplineSeries.LegendSettings
>
077.
078.
<
telerik:ScatterSplineSeries.TrackBallInfoTemplate
>
079.
<
DataTemplate
>
080.
<
StackPanel
Orientation
=
"Vertical"
>
081.
<
TextBlock
Text
=
"{Binding DataPoint.XValue, StringFormat=Milepost: {0}}"
/>
082.
<
TextBlock
Text
=
"{Binding DataPoint.YValue, StringFormat=Region Grade: {0:0.000}}"
083.
Foreground
=
"Blue"
/>
084.
</
StackPanel
>
085.
</
DataTemplate
>
086.
</
telerik:ScatterSplineSeries.TrackBallInfoTemplate
>
087.
088.
<
telerik:ScatterSplineSeries.RenderOptions
>
089.
<
telerik:BitmapRenderOptions
/>
090.
</
telerik:ScatterSplineSeries.RenderOptions
>
091.
092.
</
telerik:ScatterSplineSeries
>
093.
094.
<!-- Plot 2 -->
095.
<
telerik:ScatterSplineSeries
XValueBinding
=
"Mp"
096.
YValueBinding
=
"SubdivGrade"
097.
ItemsSource
=
"{Binding GradeProfiles}"
098.
Stroke
=
"Red"
099.
StrokeThickness
=
"1"
>
100.
101.
<
telerik:ScatterSplineSeries.LegendSettings
>
102.
<
telerik:SeriesLegendSettings
Title
=
"Subdivision"
/>
103.
</
telerik:ScatterSplineSeries.LegendSettings
>
104.
105.
<
telerik:ScatterSplineSeries.TrackBallInfoTemplate
>
106.
<
DataTemplate
>
107.
<
TextBlock
Text
=
"{Binding DataPoint.YValue, StringFormat=Subdivision Grade: {0:0.000}}"
108.
Foreground
=
"Red"
/>
109.
</
DataTemplate
>
110.
</
telerik:ScatterSplineSeries.TrackBallInfoTemplate
>
111.
112.
<
telerik:ScatterSplineSeries.RenderOptions
>
113.
<
telerik:BitmapRenderOptions
/>
114.
</
telerik:ScatterSplineSeries.RenderOptions
>
115.
116.
</
telerik:ScatterSplineSeries
>
117.
</
telerik:RadCartesianChart
>
118.
119.
<
telerik:RadLegend
Items
=
"{Binding LegendItems, ElementName=gradePlot}"
120.
BorderBrush
=
"Black"
121.
BorderThickness
=
"1"
122.
HorizontalAlignment
=
"Right"
123.
VerticalAlignment
=
"Top"
124.
Margin
=
"0, 0, 2, 0"
125.
Grid.Row
=
"1"
126.
Grid.Column
=
"0"
127.
Background
=
"White"
/>
128.
129.
<
DataGrid
Grid.Row
=
"1"
130.
Grid.Column
=
"1"
131.
ItemsSource
=
"{Binding GradeProfiles}"
132.
AutoGenerateColumns
=
"True"
133.
IsReadOnly
=
"True"
>
134.
</
DataGrid
>
135.
</
Grid
>
136.
137.
<
DataTemplate.Triggers
>
138.
<
DataTrigger
Binding
=
"{Binding ElementName=panButton, Path=IsToggle}"
139.
Value
=
"True"
>
140.
<
Setter
TargetName
=
"zoomBehavior"
141.
Property
=
"ZoomMode"
142.
Value
=
"None"
/>
143.
<
Setter
TargetName
=
"zoomBehavior"
144.
Property
=
"PanMode"
145.
Value
=
"Both"
/>
146.
</
DataTrigger
>
147.
</
DataTemplate.Triggers
>
148.
</
DataTemplate
>
149.
</
TabControl.ContentTemplate
>
150.
</
TabControl
>
151.
</
Grid
>