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.Effects; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace Tango.Visuals { /// /// Interaction logic for AnalogSwitch.xaml /// public partial class AnalogSwitch : UserControl { public event Action CheckedChanged; public AnalogSwitch() { InitializeComponent(); this.PreviewMouseUp += AnalogSwitch_PreviewMouseUp; } void AnalogSwitch_PreviewMouseUp(object sender, MouseButtonEventArgs e) { IsChecked = !IsChecked; } public bool IsChecked { get { return (bool)GetValue(IsCheckedProperty); } set { SetValue(IsCheckedProperty, value); } } // Using a DependencyProperty as the backing store for IsChecked. This enables animation, styling, binding, etc... public static readonly DependencyProperty IsCheckedProperty = DependencyProperty.Register("IsChecked", typeof(bool), typeof(AnalogSwitch), new PropertyMetadata(false,new PropertyChangedCallback(CheckChanged))); private static void CheckChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { AnalogSwitch s = d as AnalogSwitch; if ((bool)e.NewValue) { s.imgON.Visibility = Visibility.Visible; s.imgOFF.Visibility = Visibility.Hidden; } else { s.imgOFF.Visibility = Visibility.Visible; s.imgON.Visibility = Visibility.Hidden; } if (s.CheckedChanged != null) s.CheckedChanged(s); } } }