using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows.Controls; using System.Windows.Input; namespace FLY.Winder.UI.Client.UIModule { public class ResetAction { public object obj; public string propertyname; public bool pressIsTrue; public ResetAction(object obj, string propertyname, bool pressIsTrue) { this.obj = obj; this.propertyname = propertyname; this.pressIsTrue = pressIsTrue; } public static void SetResetAction(Button button, object obj, string propertyname, bool pressIsTrue = true) { button.Tag = new ResetAction(obj, propertyname, pressIsTrue); button.PreviewMouseDown += Button_PreviewMouseDown; button.PreviewTouchDown += Button_PreviewTouchDown; button.PreviewMouseUp += Button_PreviewMouseUp; button.PreviewTouchUp += Button_PreviewTouchUp; } private static void Button_PreviewTouchUp(object sender, TouchEventArgs e) { ResetAction ra = (sender as Button).Tag as ResetAction; ra.Up(); } private static void Button_PreviewMouseUp(object sender, MouseButtonEventArgs e) { ResetAction ra = (sender as Button).Tag as ResetAction; ra.Up(); } private static void Button_PreviewTouchDown(object sender, TouchEventArgs e) { ResetAction ra = (sender as Button).Tag as ResetAction; ra.Down(); } private static void Button_PreviewMouseDown(object sender, MouseButtonEventArgs e) { ResetAction ra = (sender as Button).Tag as ResetAction; ra.Down(); } public void Down() { if (pressIsTrue) Misc.PropertiesManager.SetValue(obj, propertyname, true); else Misc.PropertiesManager.SetValue(obj, propertyname, false); } public void Up() { if (pressIsTrue) Misc.PropertiesManager.SetValue(obj, propertyname, false); else Misc.PropertiesManager.SetValue(obj, propertyname, true); } } }