60 lines
1.9 KiB
C#
60 lines
1.9 KiB
C#
using System;
|
|
using System.Windows;
|
|
using System.Windows.Controls;
|
|
|
|
namespace BeWo.View
|
|
{
|
|
public partial class PercentageDisplay : UserControl
|
|
{
|
|
public static readonly DependencyProperty PercentageProperty = DependencyProperty.Register("Percentage", typeof(decimal), typeof(PercentageDisplay), new UIPropertyMetadata(0m, OnPercentageChanged));
|
|
|
|
public PercentageDisplay()
|
|
{
|
|
this.InitializeComponent();
|
|
|
|
this.Loaded += (s, e) => this.Refresh(this.Percentage);
|
|
}
|
|
|
|
public decimal Percentage
|
|
{
|
|
get
|
|
{
|
|
return (decimal)this.GetValue(PercentageProperty);
|
|
}
|
|
|
|
set
|
|
{
|
|
this.SetValue(PercentageProperty, value);
|
|
}
|
|
}
|
|
|
|
private static void OnPercentageChanged(object sender, DependencyPropertyChangedEventArgs e)
|
|
{
|
|
PercentageDisplay lControl = sender as PercentageDisplay;
|
|
|
|
if (lControl.IsLoaded)
|
|
{
|
|
lControl.Refresh((decimal)e.NewValue);
|
|
}
|
|
}
|
|
|
|
private void Refresh(decimal lValue)
|
|
{
|
|
if (lValue > 100)
|
|
{
|
|
this.bar_to100.Visibility = Visibility.Collapsed;
|
|
this.grid_twoBars.ColumnDefinitions[1].Width = new GridLength(Convert.ToDouble(lValue - 100), GridUnitType.Star);
|
|
this.grid_twoBars.Children.Clear();
|
|
this.grid_twoBars.Children.Add(this.leftBar);
|
|
this.grid_twoBars.Children.Add(this.rightBar);
|
|
}
|
|
else
|
|
{
|
|
this.bar_to100.Visibility = Visibility.Visible;
|
|
this.bar_to100.Value = Convert.ToDouble(lValue);
|
|
}
|
|
|
|
this.textblock_percent.Text = string.Format("{0:0.00}%", lValue);
|
|
}
|
|
}
|
|
} |