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.Controls.Primitives;
using System.Windows.Media;

namespace FLY.ControlLibrary
{
    /// <summary>
    /// 可以修改 On, Off 样式的ToggleButton
    /// </summary>
    public class ToggleButtonOnOff : ToggleButton
    {
        /// <summary>
        /// Off时的颜色
        /// </summary>
        public static readonly DependencyProperty OffBrushProperty = DependencyProperty.Register("OffBrush", typeof(Brush), typeof(ToggleButtonOnOff));
        /// <summary>
        /// On时的颜色
        /// </summary>
        public static readonly DependencyProperty OnBrushProperty = DependencyProperty.Register("OnBrush", typeof(Brush), typeof(ToggleButtonOnOff));
        /// <summary>
        /// Off时文字
        /// </summary>
        public static readonly DependencyProperty OffLabelProperty = DependencyProperty.Register("OffLabel", typeof(string), typeof(ToggleButtonOnOff));
        /// <summary>
        /// On时文字
        /// </summary>
        public static readonly DependencyProperty OnLabelProperty = DependencyProperty.Register("OnLabel", typeof(string), typeof(ToggleButtonOnOff));


        public ToggleButtonOnOff() 
        {
            InitializeStyle();
        }
        private void InitializeStyle()
        {
            var resources = new ResourceDictionary();

            resources.Source = new Uri("pack://application:,,,/FLY.ControlLibrary;component/Themes/ToggleButtonOnOffStyle.xaml", UriKind.Absolute);
            //resources.Source = new Uri("/Themes/WindowBigCloseStyle.xaml", UriKind.Relative);

            this.Style = resources["ToggleButtonOnOffStyle"] as Style;

        }

        public static Brush GetOffBrush(UIElement element)
        {
            return (Brush)element.GetValue(OffBrushProperty);
        }
        public static void SetOffBrush(UIElement element, Brush brush)
        {
            element.SetValue(OffBrushProperty, brush);
        }
        public static Brush GetOnBrush(UIElement element)
        {
            return (Brush)element.GetValue(OnBrushProperty);
        }
        public static void SetOnBrush(UIElement element, Brush brush)
        {
            element.SetValue(OnBrushProperty, brush);
        }


        public static string GetOnLabel(UIElement element)
        {
            return (string)element.GetValue(OnLabelProperty);
        }
        public static void SetOnLabel(UIElement element, string onLabel)
        {
            element.SetValue(OnLabelProperty, onLabel);
        }

        public static string GetOffLabel(UIElement element)
        {
            return (string)element.GetValue(OffLabelProperty);
        }
        public static void SetOffLabel(UIElement element, string offLabel)
        {
            element.SetValue(OffLabelProperty, offLabel);
        }



        public Brush OnBrush
        {
            get
            {
                return (Brush)GetValue(OnBrushProperty);
            }
            set
            {
                SetValue(OnBrushProperty, value);
            }
        }
        public Brush OffBrush
        {
            get
            {
                return (Brush)GetValue(OffBrushProperty);
            }
            set
            {
                SetValue(OffBrushProperty, value);
            }
        }
        public string OnLabel
        {
            get
            {
                return (string)GetValue(OnLabelProperty);
            }
            set
            {
                SetValue(OnLabelProperty, value);
            }
        }
        public string OffLabel
        {
            get
            {
                return (string)GetValue(OffLabelProperty);
            }
            set
            {
                SetValue(OffLabelProperty, value);
            }
        }

    }

}