IconTextBox.cs 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. using CustomUI.MyControls.Primitives;
  2. using System.Windows;
  3. using System.Windows.Media;
  4. namespace CustomUI
  5. {
  6. /// <summary>
  7. /// 带图标的文本输入框
  8. /// </summary>
  9. public class IconTextBox : IconTextBoxBase
  10. {
  11. public enum IconPlacementEnum
  12. {
  13. Left,
  14. Right,
  15. }
  16. static IconTextBox()
  17. {
  18. DefaultStyleKeyProperty.OverrideMetadata(typeof(IconTextBox), new FrameworkPropertyMetadata(typeof(IconTextBox)));
  19. }
  20. #region 事件定义
  21. public static readonly RoutedEvent EnterKeyClickEvent = EventManager.RegisterRoutedEvent("EnterKeyClick",
  22. RoutingStrategy.Bubble, typeof(RoutedPropertyChangedEventHandler<object>), typeof(IconTextBox));
  23. public event RoutedPropertyChangedEventHandler<object> EnterKeyClick
  24. {
  25. add
  26. {
  27. this.AddHandler(EnterKeyClickEvent, value);
  28. }
  29. remove
  30. {
  31. this.RemoveHandler(EnterKeyClickEvent, value);
  32. }
  33. }
  34. protected virtual void OnEnterKeyClick(object oldValue, object newValue)
  35. {
  36. RoutedPropertyChangedEventArgs<object> arg =
  37. new RoutedPropertyChangedEventArgs<object>(oldValue, newValue, EnterKeyClickEvent);
  38. this.RaiseEvent(arg);
  39. }
  40. #endregion
  41. #region 依赖属性
  42. #region Path相关属性
  43. public static readonly DependencyProperty IconPlacementProperty = DependencyProperty.Register("IconPlacement"
  44. , typeof(IconPlacementEnum), typeof(IconTextBox));
  45. /// <summary>
  46. /// 文本输入框的图标显示位置
  47. /// </summary>
  48. public IconPlacementEnum IconPlacement
  49. {
  50. get { return (IconPlacementEnum)GetValue(IconPlacementProperty); }
  51. set { SetValue(IconPlacementProperty, value); }
  52. }
  53. public static readonly DependencyProperty IconColorProperty = DependencyProperty.Register("IconColor"
  54. , typeof(Brush), typeof(IconTextBox));
  55. /// <summary>
  56. /// 图标的颜色
  57. /// </summary>
  58. public Brush IconColor
  59. {
  60. get { return (Brush)GetValue(IconColorProperty); }
  61. set { SetValue(IconColorProperty, value); }
  62. }
  63. #endregion
  64. #endregion
  65. public IconTextBox() : base()
  66. {
  67. this.KeyUp += IconTextBox_KeyUp;
  68. }
  69. private void IconTextBox_KeyUp(object sender, System.Windows.Input.KeyEventArgs e)
  70. {
  71. if(e.Key == System.Windows.Input.Key.Enter)
  72. {
  73. this.OnEnterKeyClick(null, null);
  74. }
  75. }
  76. }
  77. }