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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
namespace MultiLayout.MainEdit
{
/// <summary>
/// PgMainEditGage.xaml 的交互逻辑
/// </summary>
public partial class PgMainEditGage : Page
{
FlyLayoutManager manager;
FlyLayout layout;
ObservableCollection<GageTabItem> Items = new ObservableCollection<GageTabItem>();
public PgMainEditGage()
{
InitializeComponent();
}
public void Init(FlyLayoutManager manager)
{
this.manager = manager;
layout = this.manager.layout;
if (layout.GageTabItems == null)
{
//完成没有设备
}
else
{
string json = Newtonsoft.Json.JsonConvert.SerializeObject(layout.GageTabItems);
var gageTabItems = Newtonsoft.Json.JsonConvert.DeserializeObject<List<GageTabItem>>(json);
foreach (var gageTabItem in gageTabItems)
{
Items.Add(gageTabItem);
}
}
UpdateTabControl();
}
void UpdateTabControl()
{
tabcontrol.Items.Clear();
for (int i = 0; i < Items.Count(); i++)
{
TabControlAdd(Items[i]);
}
Items.CollectionChanged += Items_CollectionChanged;
}
private void Items_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
{
switch (e.Action)
{
case System.Collections.Specialized.NotifyCollectionChangedAction.Add:
{
foreach (GageTabItem item in e.NewItems)
{
TabControlAdd(item);
}
tabcontrol.SelectedIndex = tabcontrol.Items.Count - 1;
}
break;
case System.Collections.Specialized.NotifyCollectionChangedAction.Move:
{
TabItem ti_old = tabcontrol.Items[e.OldStartingIndex] as TabItem;
if (tabcontrol.SelectedItem == ti_old)
{
tabcontrol.Items.RemoveAt(e.OldStartingIndex);
tabcontrol.Items.Insert(e.NewStartingIndex, ti_old);
tabcontrol.SelectedItem = ti_old;
}
else
{
tabcontrol.Items.RemoveAt(e.OldStartingIndex);
tabcontrol.Items.Insert(e.NewStartingIndex, ti_old);
}
}
break;
case System.Collections.Specialized.NotifyCollectionChangedAction.Remove:
{
tabcontrol.Items.RemoveAt(e.OldStartingIndex);
}
break;
}
}
void TabControlAdd(GageTabItem item)
{
TabItem ti = new TabItem()
{
Tag = item
};
ti.SetBinding(TabItem.HeaderProperty, new Binding("Title") { Source = item });
UcMeGageTabItem uc = new UcMeGageTabItem();
uc.Init(item, manager);
ti.Content = uc;
tabcontrol.Items.Add(ti);
}
private void button_ok_Click(object sender, RoutedEventArgs e)
{
string strTipRebootForExecute = "需要重启,才能生效";
if (FLY.ControlLibrary.MyMessageBox.Show(strTipRebootForExecute) == true)
{
//保存!!!!
layout.GageTabItems = Items.ToList();
layout.Save();
manager.MatchParam();
System.Windows.Forms.Application.Restart();
Application.Current.Shutdown();
}
return;
}
private void button_itemAdd_Click(object sender, RoutedEventArgs e)
{
GageTabItem item = new GageTabItem();
Items.Add(item);
}
private void button_itemEdit_Click(object sender, RoutedEventArgs e)
{
//向上找TabItem
TabItem tabitem = FLY.ControlLibrary.COMMON.GetParent<TabItem>(sender as DependencyObject);
if (tabitem == null)
{
//异常
return;
}
int idx = Items.IndexOf(tabitem.Tag as GageTabItem);
if (idx < 0)
{
//异常
return;
}
WdGageTabItemConfig w = new WdGageTabItemConfig();
w.Init(Items, idx, manager.serviceNames);
w.Owner = FLY.ControlLibrary.COMMON.GetWindow(this);
w.ShowDialog();
}
private void button_itemDel_Click(object sender, RoutedEventArgs e)
{
e.Handled = true;
//向上找TabItem
TabItem tabitem = FLY.ControlLibrary.COMMON.GetParent<TabItem>(sender as DependencyObject);
if (tabitem == null)
{
//异常
return;
}
int idx = Items.IndexOf(tabitem.Tag as GageTabItem);
if (idx < 0)
{
//异常
return;
}
//提示是否删除
string strTipTabItemDel = "设备页面将要被删除, 是否确定?";
if (FLY.ControlLibrary.MyMessageBox.Show(strTipTabItemDel) == true)
{
Items.RemoveAt(idx);
}
}
private void btnBackClick(object sender, RoutedEventArgs e)
{
if (FLY.ControlLibrary.MyMessageBox.Show("将要退出编辑,是否保存,然后重启生效?") == true)
{
//保存!!!!
layout.GageTabItems = Items.ToList();
layout.Save();
manager.MatchParam();
System.Windows.Forms.Application.Restart();
Application.Current.Shutdown();
}
else
{
NavigationService.GoBack();
}
}
}
}