using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace Tango.Touch.Controls { public class TouchRingProgress : ProgressBar { private SharedUI.Shapes.Arc _arc; public double RingThickness { get { return (double)GetValue(RingThicknessProperty); } set { SetValue(RingThicknessProperty, value); } } public static readonly DependencyProperty RingThicknessProperty = DependencyProperty.Register("RingThickness", typeof(double), typeof(TouchRingProgress), new PropertyMetadata(3.0)); static TouchRingProgress() { DefaultStyleKeyProperty.OverrideMetadata(typeof(TouchRingProgress), new FrameworkPropertyMetadata(typeof(TouchRingProgress))); } public override void OnApplyTemplate() { base.OnApplyTemplate(); _arc = GetTemplateChild("PART_Arc") as SharedUI.Shapes.Arc; SetArc(); } protected override void OnValueChanged(double oldValue, double newValue) { base.OnValueChanged(oldValue, newValue); SetArc(); } protected override void OnMaximumChanged(double oldMaximum, double newMaximum) { base.OnMaximumChanged(oldMaximum, newMaximum); SetArc(); } private void SetArc() { if (_arc != null) { _arc.StartAngle = 359.999 * (Minimum / (Maximum - Minimum)); _arc.EndAngle = 359.999 * (Value / (Maximum - Minimum)); } } } }