| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 | using System;using System.Collections.Generic;using System.ComponentModel;using System.Windows;using System.Windows.Controls;using FurnaceUI.Views.Recipes;namespace FurnaceUI.Controls{    partial class PaginationList : UserControl, INotifyPropertyChanged    {        #region 属性         public List<BoatWaferItem> SubItems { private get; set; }        public List<BoatWaferItem> Items        {            get { return (List<BoatWaferItem>)GetValue(ItemsProperty); }            set { SetValue(ItemsProperty, value); }        }        public static readonly DependencyProperty ItemsProperty =            DependencyProperty.Register("Items", typeof(List<BoatWaferItem>), typeof(PaginationList),new PropertyMetadata(null, new PropertyChangedCallback(RenderUpdateByPropertyChanged)));        public int CurrentItemIndex        {            get { return (int)GetValue(CurrentItemIndexProperty); }            set { SetValue(CurrentItemIndexProperty, value); }        }        public static readonly DependencyProperty CurrentItemIndexProperty =            DependencyProperty.Register("CurrentItemIndex", typeof(int), typeof(PaginationList), new PropertyMetadata(-1, new PropertyChangedCallback(RenderUpdateByPropertyChanged)));        #endregion        #region 页面属性        public int PageIndex { get; set; } = 1;        public int PageCount { get; set; }        public int RecordCount { get; set; }        public int PageSize        {            get { return (int)GetValue(PageSizeProperty); }            set { SetValue(PageSizeProperty, value); }        }        public static readonly DependencyProperty PageSizeProperty =           DependencyProperty.Register("PageSize", typeof(int), typeof(PaginationList), new PropertyMetadata(1, new PropertyChangedCallback(RenderUpdateByPropertyChanged)));        public bool IsListEnable        {            get { return (bool)GetValue(IsListEnableProperty); }            set { SetValue(IsListEnableProperty, value); }        }        public static readonly DependencyProperty IsListEnableProperty =           DependencyProperty.Register("IsListEnable", typeof(bool), typeof(PaginationList), new PropertyMetadata(true, new PropertyChangedCallback(RenderUpdateByPropertyChanged)));        public event PropertyChangedEventHandler PropertyChanged;        #endregion        #region 翻页命令        public void NextPageCommand()        {            if (PageIndex < PageCount)            {                PageIndex = PageIndex + 1;                TakePage();            }        }        public void PreviousPageCommand()        {            if (PageIndex > 1)            {                PageIndex = PageIndex - 1; ;                TakePage();            }        }        public void HomePageCommand()        {            PageIndex = 1;            TakePage();        }        public void TailPageCommand()        {            PageIndex = PageCount;            TakePage();        }                #endregion        public PaginationList()        {            InitializeComponent();        }        /// <summary>        /// 当属性刷新的时候,进行强制更新绘图        /// </summary>        /// <param name="dependency"></param>        /// <param name="e"></param>        public static void RenderUpdateByPropertyChanged(DependencyObject dependency, DependencyPropertyChangedEventArgs e)        {            if (dependency is PaginationList hslThermometer)            {                hslThermometer.TakePage();            }        }        private void TakePage()        {            if (PageSize <= 0 || Items == null || Items.Count<=0) return;            PageCount = Items.Count / PageSize;            RecordCount = Items.Count % PageSize;            if (RecordCount > 0)                PageCount += 1;            if (PageIndex == PageCount)//最后一页            {                RecordCount = RecordCount == 0 ? PageSize : RecordCount;                SubItems = Items.GetRange((PageIndex - 1) * PageSize, RecordCount);            }            else            {                SubItems = Items.GetRange((PageIndex - 1) * PageSize, PageSize);            }            SortSubItems();            list.ItemsSource = SubItems;            list.IsEnabled = IsListEnable;        }        private void SortSubItems()        {            BoatWaferItem[] TempList = new BoatWaferItem[SubItems.Count];            var length = TempList.Length % 2 == 0 ? TempList.Length : TempList.Length + 1;            for (int i = 0; i < TempList.Length; i++)            {                if(i%2==0)                    TempList[i] = SubItems[i/2];                else                    TempList[i] = SubItems[i/2 + length / 2];            }                       SubItems =new List<BoatWaferItem>(TempList);        }        private void Button_Click(object sender, RoutedEventArgs e)        {            Button btn = sender as Button;            switch (btn.Tag)            {                case "HomePage":                    HomePageCommand();                    break;                case "PrePage":                    PreviousPageCommand();                    break;                case "NextPage":                    NextPageCommand();                    break;                case "TailPage":                    TailPageCommand();                    break;            }                   }        private void Button_Click_1(object sender, RoutedEventArgs e)        {            Button btn = sender as Button;            CurrentItemIndex = (int)btn.Tag;        }    }}
 |