or
<
Window
x:Class
=
"GaugeTest.MainWindow"
xmlns:telerik
=
"http://schemas.telerik.com/2008/xaml/presentation"
xmlns:local
=
"clr-namespace:GaugeTest"
Title
=
"MainWindow"
Height
=
"638"
Width
=
"575"
>
<
StackPanel
>
<
telerik:RadRadialGauge
Name
=
"PART_Gauge"
Width
=
"220"
Height
=
"220"
>
<
telerik:RadialScale
Name
=
"scale"
RangeLocation
=
"Outside"
LabelRotationMode
=
"None"
Radius
=
"0.93"
Ranges
=
"{Binding Ranges}"
>
<
telerik:RadialScale.Indicators
>
<
telerik:BarIndicator
Name
=
"radialBar"
UseRangeColor
=
"True"
RangeColorMode
=
"ProportionalBrush"
StartWidth
=
"0.06"
telerik:ScaleObject.Location
=
"Outside"
telerik:ScaleObject.Offset
=
"0.01*"
Value
=
"0"
/>
</
telerik:RadialScale.Indicators
>
</
telerik:RadialScale
>
</
telerik:RadRadialGauge
>
<
local:RadialGaugeControl
Width
=
"220"
Height
=
"220"
/>
</
StackPanel
>
</
Window
>
using System;
using System.Linq;
using System.Windows;
using System.Windows.Media;
using Telerik.Windows.Controls;
using Telerik.Windows.Controls.Gauge;
namespace GaugeTest
{
/// <
summary
>
/// Interaction logic for MainWindow.xaml
/// </
summary
>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
scale.SetCurrentValue(ScaleBase.RangesProperty, new GaugeRangeCollection());
this.DataContext = new MainWindowViewModel();
}
}
public class MainWindowViewModel : ViewModelBase
{
public MainWindowViewModel()
{
Ranges = new GaugeRangeCollection();
AddRange(0, 30, Colors.Green);
AddRange(30, 60, Colors.Yellow);
AddRange(60, 100, Colors.Orange);
}
private void AddRange(double min, double max, Color color)
{
GaugeRange gr = new GaugeRange()
{
Min = min,
Max = max,
StartWidth = 0.01,
EndWidth = 0.01,
Background = new SolidColorBrush(color),
IndicatorBackground = new SolidColorBrush(color),
TickBackground = new SolidColorBrush(color),
LabelForeground = new SolidColorBrush(color),
};
gr.PropertyChanged += (s, e) =>
{
if (e.PropertyName == "Background")
{
// make sure they are in sync
gr.IndicatorBackground = gr.Background;
gr.TickBackground = gr.Background;
gr.LabelForeground = gr.Background;
}
};
Ranges.Add(gr);
}
private GaugeRangeCollection _ranges;
public GaugeRangeCollection Ranges
{
get
{
return _ranges;
}
set
{
_ranges = value;
OnPropertyChanged(() => Ranges);
}
}
}
}
using System;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
namespace GaugeTest
{
public class RadialGaugeControl : Control
{
static RadialGaugeControl()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(RadialGaugeControl), new FrameworkPropertyMetadata(typeof(RadialGaugeControl)));
}
}
}
<
ResourceDictionary
xmlns:telerik
=
"http://schemas.telerik.com/2008/xaml/presentation"
xmlns:local
=
"clr-namespace:GaugeTest"
>
<
Style
TargetType
=
"{x:Type local:RadialGaugeControl}"
>
<
Setter
Property
=
"Template"
>
<
Setter.Value
>
<
ControlTemplate
TargetType
=
"{x:Type local:RadialGaugeControl}"
>
<
Border
Background
=
"{TemplateBinding Background}"
BorderBrush
=
"{TemplateBinding BorderBrush}"
BorderThickness
=
"{TemplateBinding BorderThickness}"
>
<
telerik:RadRadialGauge
Name
=
"PART_Gauge"
Width
=
"220"
Height
=
"220"
>
<
telerik:RadialScale
Name
=
"PART_Scale"
RangeLocation
=
"Outside"
LabelRotationMode
=
"None"
Radius
=
"0.93"
Ranges
=
"{Binding Ranges}"
>
<
telerik:RadialScale.Indicators
>
<
telerik:BarIndicator
Name
=
"radialBar"
UseRangeColor
=
"True"
RangeColorMode
=
"ProportionalBrush"
StartWidth
=
"0.06"
telerik:ScaleObject.Location
=
"Outside"
telerik:ScaleObject.Offset
=
"0.01*"
Value
=
"0"
/>
</
telerik:RadialScale.Indicators
>
</
telerik:RadialScale
>
</
telerik:RadRadialGauge
>
</
Border
>
</
ControlTemplate
>
</
Setter.Value
>
</
Setter
>
</
Style
>
</
ResourceDictionary
>
<
Application
x:Class
=
"GaugeTest.App"
StartupUri
=
"MainWindow.xaml"
>
<
Application.Resources
>
<
ResourceDictionary
>
<
ResourceDictionary.MergedDictionaries
>
<
ResourceDictionary
Source
=
"/Telerik.Windows.Themes.Windows8;component/Themes/Telerik.Windows.Controls.xaml"
/>
<
ResourceDictionary
Source
=
"/Telerik.Windows.Themes.Windows8;component/Themes/Telerik.Windows.Controls.DataVisualization.xaml"
/>
</
ResourceDictionary.MergedDictionaries
>
</
ResourceDictionary
>
</
Application.Resources
>
</
Application
>