| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 | 
							- using System;
 
- using System.Collections.Generic;
 
- using System.Collections.Specialized;
 
- using System.Linq;
 
- using System.Text;
 
- using System.Threading.Tasks;
 
- using System.Windows.Controls;
 
- using System.Windows;
 
- namespace Venus_Themes.CustomControls
 
- {
 
-     public class StepBar : ItemsControl
 
-     {
 
-         #region Private属性
 
-         #endregion
 
-         #region 依赖属性定义
 
-         public int Progress
 
-         {
 
-             get { return (int)GetValue(ProgressProperty); }
 
-             set { SetValue(ProgressProperty, value); }
 
-         }
 
-         public static readonly DependencyProperty ProgressProperty =
 
-             DependencyProperty.Register("Progress", typeof(int), typeof(StepBar), new PropertyMetadata(0, OnProgressChangedCallback, OnProgressCoerceValueCallback));
 
-         private static object OnProgressCoerceValueCallback(DependencyObject d, object baseValue)
 
-         {
 
-             //不让Progress超出边界
 
-             StepBar stepBar = d as StepBar;
 
-             int newValue = Convert.ToInt32(baseValue);
 
-             if (newValue < 0)
 
-             {
 
-                 return 0;
 
-             }
 
-             else if (newValue >= stepBar.Items.Count)
 
-             {
 
-                 return stepBar.Items.Count - 1;
 
-             }
 
-             return newValue;
 
-         }
 
-         private static void OnProgressChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e)
 
-         {
 
-         }
 
-         #endregion
 
-         #region 依赖属性set get
 
-         #endregion
 
-         #region Constructors
 
-         static StepBar()
 
-         {
 
-             DefaultStyleKeyProperty.OverrideMetadata(typeof(StepBar), new FrameworkPropertyMetadata(typeof(StepBar)));
 
-         }
 
-         #endregion
 
-         #region Override方法
 
-         protected override DependencyObject GetContainerForItemOverride()
 
-         {
 
-             return new StepBarItem();
 
-         }
 
-         protected override void PrepareContainerForItemOverride(DependencyObject element, object item)
 
-         {
 
-             //设置Item的显示数字
 
-             StepBarItem stepBarItem = element as StepBarItem;
 
-             ItemsControl itemsControl = ItemsControl.ItemsControlFromItemContainer(stepBarItem);
 
-             int index = itemsControl.ItemContainerGenerator.IndexFromContainer(stepBarItem);
 
-             stepBarItem.Number = Convert.ToString(++index);
 
-             base.PrepareContainerForItemOverride(element, item);
 
-         }
 
-         protected override void OnItemsChanged(NotifyCollectionChangedEventArgs e)
 
-         {
 
-             base.OnItemsChanged(e);
 
-             //ItemsControl数量变化时,重新设置各个Item的显示的数字
 
-             for (int i = 0; i < this.Items.Count; i++)
 
-             {
 
-                 StepBarItem stepBarItem = this.ItemContainerGenerator.ContainerFromIndex(i) as StepBarItem;
 
-                 if (stepBarItem != null)
 
-                 {
 
-                     int temp = i;
 
-                     stepBarItem.Number = Convert.ToString(++temp);
 
-                 }
 
-             }
 
-             //进度重新回到第一个
 
-             this.Progress = 0;
 
-         }
 
-         #endregion
 
-         #region Private方法
 
-         #endregion
 
-     }
 
- }
 
 
  |