using ComeCapture.Models; using System.Windows; using System.Windows.Controls; using System.Windows.Media; namespace ComeCapture.Controls { public class ToolButton : RadioButton { static ToolButton() { DefaultStyleKeyProperty.OverrideMetadata( typeof(ToolButton), new FrameworkPropertyMetadata(typeof(ToolButton)) ); } #region 覆写点击事件(可弹起) protected override void OnClick() { if (IsImageEditBar) { switch (Tool) { case Tool.Revoke: JieTuWindow.Current.OnRevoke(); break; case Tool.Save: JieTuWindow.Current.OnSave(); break; case Tool.Cancel: JieTuWindow.Current.OnCancel(); break; case Tool.OK: JieTuWindow.Current.OnOK(); break; default: IsChecked = !IsChecked; SizeColorBar.Current.Selected = IsChecked == true ? Tool : Tool.Null; break; } } else { if (IsChecked == false) { IsChecked = true; if (LineColor != null) { SizeColorBar.Current.ChangeColor(LineColor); } } } } #endregion 覆写点击事件(可弹起) #region Tool DependencyProperty public Tool Tool { get => (Tool)GetValue(ToolProperty); set => SetValue(ToolProperty, value); } public static readonly DependencyProperty ToolProperty = DependencyProperty.Register("Tool", typeof(Tool), typeof(ToolButton), new PropertyMetadata(Tool.Null, new PropertyChangedCallback(ToolButton.OnToolPropertyChanged))); private static void OnToolPropertyChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e) { if (obj is ToolButton) { (obj as ToolButton).OnToolValueChanged(); } } protected void OnToolValueChanged() { } #endregion Tool DependencyProperty #region IsImageEditBar DependencyProperty public bool IsImageEditBar { get => (bool)GetValue(IsImageEditBarProperty); set => SetValue(IsImageEditBarProperty, value); } public static readonly DependencyProperty IsImageEditBarProperty = DependencyProperty.Register("IsImageEditBar", typeof(bool), typeof(ToolButton), new PropertyMetadata(false, new PropertyChangedCallback(ToolButton.OnIsImageEditBarPropertyChanged))); private static void OnIsImageEditBarPropertyChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e) { if (obj is ToolButton) { (obj as ToolButton).OnIsImageEditBarValueChanged(); } } protected void OnIsImageEditBarValueChanged() { } #endregion IsImageEditBar DependencyProperty #region LineColor DependencyProperty public SolidColorBrush LineColor { get => (SolidColorBrush)GetValue(LineColorProperty); set => SetValue(LineColorProperty, value); } public static readonly DependencyProperty LineColorProperty = DependencyProperty.Register("LineColor", typeof(SolidColorBrush), typeof(ToolButton), new PropertyMetadata(null, new PropertyChangedCallback(ToolButton.OnLineColorPropertyChanged))); private static void OnLineColorPropertyChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e) { if (obj is ToolButton) { (obj as ToolButton).OnLineColorValueChanged(); } } protected void OnLineColorValueChanged() { } #endregion LineColor DependencyProperty } }