Sic04/FrameworkLocal/UIClient/CenterViews/Controls/LED.xaml.cs

57 lines
2.0 KiB
C#

using System;
using System.Globalization;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Media;
namespace MECF.Framework.UI.Client.CenterViews.Controls
{
public partial class LED : UserControl
{
// Using a DependencyProperty as the backing store for On. This enables animation, styling, binding, etc...
public static readonly DependencyProperty OnProperty =
DependencyProperty.Register("On", typeof(bool), typeof(LED), new PropertyMetadata(false));
// Using a DependencyProperty as the backing store for IsRed. This enables animation, styling, binding, etc...
public static readonly DependencyProperty IsRedProperty =
DependencyProperty.Register("IsRed", typeof(bool), typeof(LED), new PropertyMetadata(false));
public LED()
{
InitializeComponent();
root.DataContext = this;
}
public bool On
{
get => (bool) GetValue(OnProperty);
set => SetValue(OnProperty, value);
}
public bool IsRed
{
get => (bool) GetValue(IsRedProperty);
set => SetValue(IsRedProperty, value);
}
}
public class LedConverter : IMultiValueConverter
{
static Brush GreenBrush = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#FF07FF07"));
static Brush GrayBrush = new SolidColorBrush(Colors.LightGray);
static Brush RedBrush = new SolidColorBrush(Colors.Red);
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
var value = (bool)values[0];
var red = (bool)values[1];
return value ? red ? RedBrush : GreenBrush : GrayBrush;
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}