ResetAction.cs 2.23 KB
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);
        }
    }
}