SegmentItem.cs 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. using System.Windows;
  2. using System.ComponentModel;
  3. using System.Windows.Controls;
  4. namespace CustomUI
  5. {
  6. /// <summary>
  7. /// 分段控件的子项
  8. /// </summary>
  9. /// <remarks>add by zhidf 2017.7.9</remarks>
  10. public class SegmentItem : ListBoxItem
  11. {
  12. #region Property
  13. private SegmentControl ParentItemsControl
  14. {
  15. get { return this.ParentSelector as SegmentControl; }
  16. }
  17. internal ItemsControl ParentSelector
  18. {
  19. get { return ItemsControl.ItemsControlFromItemContainer(this) as ItemsControl; }
  20. }
  21. #endregion
  22. #region DependencyProperty
  23. #region IsFirstItem
  24. /// <summary>
  25. /// 获取或者设置该项在列表中是否是第一个
  26. /// </summary>
  27. [Bindable(true), Description("获取或者设置该项在列表中是否是第一个")]
  28. public bool IsFirstItem
  29. {
  30. get { return (bool)GetValue(IsFirstItemProperty); }
  31. set { SetValue(IsFirstItemProperty, value); }
  32. }
  33. public static readonly DependencyProperty IsFirstItemProperty =
  34. DependencyProperty.Register("IsFirstItem", typeof(bool), typeof(SegmentItem), new PropertyMetadata(false));
  35. #endregion
  36. #region IsMiddleItem
  37. /// <summary>
  38. /// 获取或者设置该项在列表中是否是中间的一个
  39. /// </summary>
  40. [Bindable(true), Description("获取或者设置该项在列表中是否是中间的一个")]
  41. public bool IsMiddleItem
  42. {
  43. get { return (bool)GetValue(IsMiddleItemProperty); }
  44. set { SetValue(IsMiddleItemProperty, value); }
  45. }
  46. public static readonly DependencyProperty IsMiddleItemProperty =
  47. DependencyProperty.Register("IsMiddleItem", typeof(bool), typeof(SegmentItem), new PropertyMetadata(false));
  48. #endregion
  49. #region IsLastItem
  50. /// <summary>
  51. /// 获取或者设置该项在列表中是否是最后一个
  52. /// </summary>
  53. [Bindable(true), Description("获取或者设置该项在列表中是否是最后一个")]
  54. public bool IsLastItem
  55. {
  56. get { return (bool)GetValue(IsLastItemProperty); }
  57. set { SetValue(IsLastItemProperty, value); }
  58. }
  59. public static readonly DependencyProperty IsLastItemProperty =
  60. DependencyProperty.Register("IsLastItem", typeof(bool), typeof(SegmentItem), new PropertyMetadata(false));
  61. #endregion
  62. #region CornerRadius
  63. /// <summary>
  64. /// 获取或者设置空间的边框圆角
  65. /// </summary>
  66. [Bindable(true), Description("获取或者设置空间的边框圆角")]
  67. public CornerRadius CornerRadius
  68. {
  69. get { return (CornerRadius)GetValue(CornerRadiusProperty); }
  70. set { SetValue(CornerRadiusProperty, value); }
  71. }
  72. public static readonly DependencyProperty CornerRadiusProperty =
  73. DependencyProperty.Register("CornerRadius", typeof(CornerRadius), typeof(SegmentItem));
  74. #endregion
  75. #endregion
  76. #region Constructors
  77. static SegmentItem()
  78. {
  79. DefaultStyleKeyProperty.OverrideMetadata(typeof(SegmentItem), new FrameworkPropertyMetadata(typeof(SegmentItem)));
  80. }
  81. #endregion
  82. #region Override
  83. public override void OnApplyTemplate()
  84. {
  85. base.OnApplyTemplate();
  86. this.MouseLeftButtonUp += ButtonGroupItem_MouseLeftButtonUp;
  87. }
  88. #endregion
  89. #region private function
  90. #endregion
  91. #region Event Implement Function
  92. private void ButtonGroupItem_MouseLeftButtonUp(object sender, System.Windows.Input.MouseButtonEventArgs e)
  93. {
  94. this.ParentItemsControl.OnItemClick(this, this);
  95. }
  96. #endregion
  97. }
  98. }