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 }
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 }
相关文章推荐
- window.clipboardData实现剪切板操作总结
- Loadrunner 11在win7录制中失败“the recording of the application was terminated by windows due to window data execution prevention feature"
- SL - 总结 - AutoCompleteSelector
- window.clipboardData实现剪切板操作总结
- Enterprise Library Library Data Access Application Block Step By Step
- (转)avm_m1_writedata[15:0] 與 avm_m1_writedata[31:0]配合avm_m1_byteenable = 4'b0011意義是否一樣?
- UIDataPicker调研总结
- 个人总结 .net MVC Controller to View for value(ViewData and ViewBag)
- .NET环境下水晶报表使用总结 by李洪根
- Qt for Embedded Linux data directory is not owned by user xxxxh
- selenium定位元素之By.className()和By.cssSelector()
- spark 的一些常用函数 filter,map,flatMap,lookup ,reduce,groupByKey
- How can I get the logical valume by the datafile names and ASM disks?
- DataWindow的数据缓冲区
- iOS学习- 22 Core Data by Tutorials - CH02
- xjc-beyond sliding windows-Object Localization by Efficient Subwindow Search
- dataframe 用法总结
- Getting things in Magento by getModel and getData methods
- R语言中的matrix(矩阵),list(列表),data.frame(数据框)总结
- 【ASP.NET Step by Step】之十六至二十三 Inserting, Updating, and Deleting Data