TODO:萌新劝退,以下正文(举例,具体参照代码)
- 新建一个基类,实现双向通知(绑定)
-
public class PropertyChangedBase : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; protected void NotifyPropertyChanged([CallerMemberName]string propertyName = null) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } protected bool SetProperty<T>(ref T backingStore, T value, [CallerMemberName]string propertyName = "", Action onChanged = null) { if (EqualityComparer<T>.Default.Equals(backingStore, value)) return false; backingStore = value; onChanged?.Invoke(); NotifyPropertyChanged(propertyName); return true; } }
- 建立SSviewModel继承PropertyChangedBase
-
public class SSViewModel : PropertyChangedBase { /// <summary> /// 历史数据列表(选中的设备) /// </summary> public ObservableCollection<CheckHisData> CheckHisDataList { get; set; } private int selectHisCurrentIndex; /// <summary> /// 页码变更事件 /// </summary> public int SelectHisCurrentIndex { get => selectHisCurrentIndex; set => SetProperty(ref selectHisCurrentIndex, value, "", () => { GetHisData(SelectHisStartTime, SelectHisEndTime, selectHisCurrentIndex, SelectHisInterval, SelectHisStandard); }); } /// <summary> /// 获取历史数据函数 /// 委托(将函数委托) 以方便在SSviewModel中调用 /// </summary> public Action<DateTime, DateTime, int, int, bool> GetHisData { get; set; } }
TODO:逻辑实现