lixiaojun
2024-10-18 1fe41eb1c9f2b2914b4a66a145f1ad0a75b9c915
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
using DevExpress.XtraLayout.Utils;
 
namespace Yw.WinFrmUI
{
    public partial class SetHydroCalcuPrefixCtrl : DevExpress.XtraEditors.XtraUserControl
    {
        public SetHydroCalcuPrefixCtrl()
        {
            InitializeComponent();
        }
 
        /// <summary>
        /// 控件最小宽度
        /// </summary>
        public const int ControlMinWidth = 350;
 
        /// <summary>
        /// 计算事件
        /// </summary>
        public event Action<Yw.Model.HydroModelInfo> CalcuEvent;
 
        private SetHydroCalcuPrefixViewModel _vm = null;
        private SetHydroCalcuPrefixManager _wizard;
        private Func<Yw.Model.HydroModelInfo> _hydroInfoFunc = null;
 
        /// <summary>
        /// 初始化数据
        /// </summary>
        public void InitialData(Func<Yw.Model.HydroModelInfo> hydroInfoFunc)
        {
            _hydroInfoFunc = hydroInfoFunc;
        }
 
        /// <summary>
        /// 绑定数据
        /// </summary>
        public void SetBindingData()
        {
            var hydroInfo = _hydroInfoFunc?.Invoke();
            if (hydroInfo == null)
            {
                return;
            }
            _vm = new SetHydroCalcuPrefixViewModel();
            _vm.HydroInfo = hydroInfo;
            _vm.FirstPage = this.setWaterboxCalcuPrefixListCtrl1;
            _vm.LastPage = this.setNozzleCalcuPrefixListCtrl1;
            _wizard = new SetHydroCalcuPrefixManager(_vm);
            _wizard.SelectedPageChangedEvent += _wizard_SelectedPageChangedEvent;
            _wizard.SelectedPageStateChangedEvent += _wizard_SelectedPageStateChangedEvent; ;
            _wizard.InitialManager(new IWizardPage<SetHydroCalcuPrefixViewModel>[] {
                this.setWaterboxCalcuPrefixListCtrl1,
                this.setPumpCalcuPrefixListCtrl1,
                this.setNozzleCalcuPrefixListCtrl1
            });
        }
 
        //选择页面改变
        private void _wizard_SelectedPageChangedEvent(IWizardPage<SetHydroCalcuPrefixViewModel> page, int index)
        {
            this.itemForPrev.Visibility = page.AllowPrev ? LayoutVisibility.Always : LayoutVisibility.Never;
            this.itemForNext.Visibility = page.AllowNext ? LayoutVisibility.Always : LayoutVisibility.Never;
            this.navigationFrame1.SelectedPageIndex = index;
        }
 
        //选择页面状态改变
        private void _wizard_SelectedPageStateChangedEvent(IWizardPage<SetHydroCalcuPrefixViewModel> page, int index)
        {
            this.itemForPrev.Visibility = page.AllowPrev ? LayoutVisibility.Always : LayoutVisibility.Never;
            this.itemForNext.Visibility = page.AllowNext ? LayoutVisibility.Always : LayoutVisibility.Never;
        }
 
        //上一步
        private void btnPrev_Click(object sender, EventArgs e)
        {
            if (_wizard != null)
            {
                _wizard.Prev();
            }
        }
 
        //下一步
        private void btnNext_Click(object sender, EventArgs e)
        {
            if (_wizard != null)
            {
                _wizard.Next();
            }
        }
 
        //计算
        private void btnComplete_Click(object sender, EventArgs e)
        {
            if (_wizard != null)
            {
                var bol = _wizard.Complete();
                if (bol)
                {
                    var hydroInfo = _hydroInfoFunc?.Invoke();
                    if (hydroInfo == null)
                    {
                        return;
                    }
                    this.CalcuEvent?.Invoke(hydroInfo);
                }
            }
        }
 
    }
}