您的位置:首页 > 其它

SL - 总结 - DataSelectorByLookupWindow

2013-12-11 16:10 113 查看
/// <summary>    /// 1.0.1    /// </summary>    /// <typeparam name="T"></typeparam>    public class DataSelectorByLookupWindowBase<T> : ChildWindow    {        public static Action<T[]> Selected { get; set; }
        public DataSelectorByLookupWindowBase()        {            this.Loaded += new RoutedEventHandler(DataSelectorByLookupWindowBase_Loaded);        }
        void DataSelectorByLookupWindowBase_Loaded(object sender, RoutedEventArgs e)        {            var viewModel = DataContext as DataSelectorByLookupWindowViewModel<T>;            viewModel.Selected += (result) =>            {                if (Selected != null)                {                    Selected(result);                }                this.Close();            };            viewModel.Cancel += () =>            {                this.Close();            };        }    }using System;    using System.Collections.ObjectModel;    using System.Linq;
    /// <summary>    /// 1.0.5    /// </summary>    /// <typeparam name="T"></typeparam>    public abstract class DataSelectorByLookupWindowViewModel<T> : ServerPagerViewModel    {
        #region Properties        private ObservableCollection<object> itemsSource;
        public ObservableCollection<object> ItemsSource        {            get            {                return itemsSource;            }            set            {                itemsSource = value;                base.RaisePropertyChanged(this, "ItemsSource");            }        }
        private object selectedItem;
        public object SelectedItem        {            get            {                return selectedItem;            }            set            {                selectedItem = value;                base.RaisePropertyChanged(this, "SelectedItem");            }        }
        private ObservableCollection<object> selectedItems;
        public ObservableCollection<object> SelectedItems        {            get            {                return selectedItems;            }            set            {                selectedItems = value;                base.RaisePropertyChanged(this, "SelectedItems");            }        }
        public Action<T[]> Selected { get; set; }
        public Action Cancel { get; set; }
        private bool searchButtonIsEnabled;
        public bool SearchButtonIsEnabled        {            get            {                return searchButtonIsEnabled;            }            set            {                searchButtonIsEnabled = value;                base.RaisePropertyChanged(this, "SearchButtonIsEnabled");            }        }
        private bool okButtonIsEnabled;
        public bool OkButtonIsEnabled        {            get            {                return okButtonIsEnabled;            }            set            {                okButtonIsEnabled = value;                base.RaisePropertyChanged(this, "OkButtonIsEnabled");            }        }        #endregion
        public DataSelectorByLookupWindowViewModel()        {            this.SelectedItems = new ObservableCollection<object>();            this.SelectedItems.CollectionChanged += new System.Collections.Specialized.NotifyCollectionChangedEventHandler(SelectedItems_CollectionChanged);
            this.ItemsSource = new ObservableCollection<object>();        }
        void SelectedItems_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)        {            OkButtonIsEnabled = this.SelectedItems.Count > 0;        }
        #region for parent        protected override void OnPageIndexChanged()        {            Search();        }        #endregion
        #region for children        protected abstract void OnSearch(Action<int> callback);
        /// <summary>        /// Called when [selected after confirm].        /// </summary>        /// <param name="items">The items.</param>        protected virtual void OnSelectedAfterConfirm(object[] items)        {            if (Selected != null)            {                if (items != null)                {                    if (items.Count() > 0)                    {                        Selected(items.Cast<T>().ToArray());                    }                    else                    {                        Selected(new T[] { (T)this.SelectedItem });                    }                }            }        }
        /// <summary>        /// Called when [cancel].        /// </summary>        protected virtual void OnCancel()        {            if (Cancel != null)            {                Cancel();            }        }        #endregion
        #region for user        /// <summary>        /// Searches this instance.        /// </summary>        public void Search()        {            OnSearch((totalCount) =>            {                OnPagerBind(totalCount);                this.SelectedItems.Clear();            });        }
        protected void SetItemsSource(object[] items)        {            ItemsSource.Clear();            foreach (var item in items)            {                ItemsSource.Add(item);            }        }        #endregion
        #region Commands        /// <summary>        /// Gets the search command.        /// </summary>        public DelegateCommand SearchCommand        {            get            {                return new DelegateCommand((parameter) =>                {                    Search();                });            }        }
        /// <summary>        /// Gets the ok command.        /// </summary>        public DelegateCommand OkCommand        {            get            {                return new DelegateCommand((parameter) =>                {                    OnSelectedAfterConfirm(this.SelectedItems.ToArray());                });            }        }
        /// <summary>        /// Gets the cancel command.        /// </summary>        public DelegateCommand CancelCommand        {            get            {                return new DelegateCommand((parameter) =>                {                    OnCancel();                });            }        }        #endregion    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: