0
|
1 #if FW2
|
|
2
|
|
3 namespace System
|
|
4 {
|
|
5 public delegate void Action();
|
|
6
|
|
7 public delegate void Action<T1, T2>(T1 arg1, T2 arg2);
|
|
8
|
|
9 public delegate void Action<T1, T2, T3>(T1 arg1, T2 arg2, T3 arg3);
|
|
10
|
|
11 public delegate void Action<T1, T2, T3, T4>(T1 arg1, T2 arg2, T3 arg3, T4 arg4);
|
|
12
|
|
13 public delegate TResult Func<TResult>();
|
|
14
|
|
15 public delegate TResult Func<T1, TResult>(T1 arg1);
|
|
16
|
|
17 public delegate TResult Func<T1, T2, TResult>(T1 arg1, T2 arg2);
|
|
18
|
|
19 public delegate TResult Func<T1, T2, T3, TResult>(T1 arg1, T2 arg2, T3 arg3);
|
|
20
|
|
21 public delegate TResult Func<T1, T2, T3, T4, TResult>(T1 arg1, T2 arg2, T3 arg3, T4 arg4);
|
|
22 }
|
|
23
|
|
24 namespace System.Collections.Specialized
|
|
25 {
|
|
26 public interface INotifyCollectionChanged
|
|
27 {
|
|
28 event NotifyCollectionChangedEventHandler CollectionChanged;
|
|
29 }
|
|
30
|
|
31 /// <summary>
|
|
32 /// This enum describes the action that caused a CollectionChanged event.
|
|
33 /// </summary>
|
|
34 public enum NotifyCollectionChangedAction
|
|
35 {
|
|
36 /// <summary> One or more items were added to the collection. </summary>
|
|
37 Add,
|
|
38 /// <summary> One or more items were removed from the collection. </summary>
|
|
39 Remove,
|
|
40 /// <summary> One or more items were replaced in the collection. </summary>
|
|
41 Replace,
|
|
42 /// <summary> One or more items were moved within the collection. </summary>
|
|
43 Move,
|
|
44 /// <summary> The contents of the collection changed dramatically. </summary>
|
|
45 Reset,
|
|
46 }
|
|
47
|
|
48 /// <summary>
|
|
49 /// Arguments for the CollectionChanged event. A collection that supports
|
|
50 /// INotifyCollectionChangedThis raises this event whenever an item is added or
|
|
51 /// removed, or when the contents of the collection changes dramatically.
|
|
52 /// </summary>
|
|
53 public class NotifyCollectionChangedEventArgs : EventArgs
|
|
54 {
|
|
55 #region .ctors
|
|
56
|
|
57 /// <summary>
|
|
58 /// Construct a NotifyCollectionChangedEventArgs that describes a reset change.
|
|
59 /// </summary>
|
|
60 /// <param name="action">The action that caused the event (must be Reset).</param>
|
|
61 public NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction action)
|
|
62 : this(action, null, -1)
|
|
63 {
|
|
64 }
|
|
65
|
|
66 /// <summary>
|
|
67 /// Construct a NotifyCollectionChangedEventArgs that describes a one-item change.
|
|
68 /// </summary>
|
|
69 /// <param name="action">The action that caused the event; can only be Reset, Add or Remove action.</param>
|
|
70 /// <param name="changedItem">The item affected by the change.</param>
|
|
71 public NotifyCollectionChangedEventArgs(
|
|
72 NotifyCollectionChangedAction action,
|
|
73 object changedItem)
|
|
74 : this(action, changedItem, -1)
|
|
75 {
|
|
76 }
|
|
77
|
|
78 /// <summary>
|
|
79 /// Construct a NotifyCollectionChangedEventArgs that describes a one-item change.
|
|
80 /// </summary>
|
|
81 /// <param name="action">The action that caused the event.</param>
|
|
82 /// <param name="changedItem">The item affected by the change.</param>
|
|
83 /// <param name="index">The index where the change occurred.</param>
|
|
84 public NotifyCollectionChangedEventArgs(
|
|
85 NotifyCollectionChangedAction action,
|
|
86 object changedItem,
|
|
87 int index)
|
|
88 : this(action, changedItem == null? null: new[]{ changedItem }, index)
|
|
89 {
|
|
90 }
|
|
91
|
|
92 /// <summary>
|
|
93 /// Construct a NotifyCollectionChangedEventArgs that describes a multi-item change.
|
|
94 /// </summary>
|
|
95 /// <param name="action">The action that caused the event.</param>
|
|
96 /// <param name="changedItems">The items affected by the change.</param>
|
|
97 public NotifyCollectionChangedEventArgs(
|
|
98 NotifyCollectionChangedAction action,
|
|
99 IList changedItems)
|
|
100 : this(action, changedItems, -1)
|
|
101 {
|
|
102 }
|
|
103
|
|
104 /// <summary>
|
|
105 /// Construct a NotifyCollectionChangedEventArgs that describes a multi-item change (or a reset).
|
|
106 /// </summary>
|
|
107 /// <param name="action">The action that caused the event.</param>
|
|
108 /// <param name="changedItems">The items affected by the change.</param>
|
|
109 /// <param name="startingIndex">The index where the change occurred.</param>
|
|
110 public NotifyCollectionChangedEventArgs(
|
|
111 NotifyCollectionChangedAction action,
|
|
112 IList changedItems,
|
|
113 int startingIndex)
|
|
114 {
|
|
115 _action = action;
|
|
116
|
|
117 if (action == NotifyCollectionChangedAction.Add)
|
|
118 {
|
|
119 _newItems = changedItems;
|
|
120 _newStartingIndex = startingIndex;
|
|
121 }
|
|
122 else if (action == NotifyCollectionChangedAction.Remove)
|
|
123 {
|
|
124 _oldItems = changedItems;
|
|
125 _oldStartingIndex = startingIndex;
|
|
126 }
|
|
127 }
|
|
128
|
|
129 /// <summary>
|
|
130 /// Construct a NotifyCollectionChangedEventArgs that describes a one-item Replace event.
|
|
131 /// </summary>
|
|
132 /// <param name="action">Can only be a Replace action.</param>
|
|
133 /// <param name="newItem">The new item replacing the original item.</param>
|
|
134 /// <param name="oldItem">The original item that is replaced.</param>
|
|
135 public NotifyCollectionChangedEventArgs(
|
|
136 NotifyCollectionChangedAction action,
|
|
137 object newItem,
|
|
138 object oldItem)
|
|
139 : this(action, new[] { newItem }, new[] { oldItem }, -1)
|
|
140 {
|
|
141 }
|
|
142
|
|
143 /// <summary>
|
|
144 /// Construct a NotifyCollectionChangedEventArgs that describes a one-item Replace event.
|
|
145 /// </summary>
|
|
146 /// <param name="action">Can only be a Replace action.</param>
|
|
147 /// <param name="newItem">The new item replacing the original item.</param>
|
|
148 /// <param name="oldItem">The original item that is replaced.</param>
|
|
149 /// <param name="index">The index of the item being replaced.</param>
|
|
150 public NotifyCollectionChangedEventArgs(
|
|
151 NotifyCollectionChangedAction action,
|
|
152 object newItem,
|
|
153 object oldItem,
|
|
154 int index)
|
|
155 : this(action, new[] { newItem }, new[] { oldItem }, index)
|
|
156 {
|
|
157 }
|
|
158
|
|
159 /// <summary>
|
|
160 /// Construct a NotifyCollectionChangedEventArgs that describes a multi-item Replace event.
|
|
161 /// </summary>
|
|
162 /// <param name="action">Can only be a Replace action.</param>
|
|
163 /// <param name="newItems">The new items replacing the original items.</param>
|
|
164 /// <param name="oldItems">The original items that are replaced.</param>
|
|
165 public NotifyCollectionChangedEventArgs(
|
|
166 NotifyCollectionChangedAction action,
|
|
167 IList newItems,
|
|
168 IList oldItems)
|
|
169 : this(action, newItems, oldItems, -1)
|
|
170 {
|
|
171 }
|
|
172
|
|
173 /// <summary>
|
|
174 /// Construct a NotifyCollectionChangedEventArgs that describes a multi-item Replace event.
|
|
175 /// </summary>
|
|
176 /// <param name="action">Can only be a Replace action.</param>
|
|
177 /// <param name="newItems">The new items replacing the original items.</param>
|
|
178 /// <param name="oldItems">The original items that are replaced.</param>
|
|
179 /// <param name="startingIndex">The starting index of the items being replaced.</param>
|
|
180 public NotifyCollectionChangedEventArgs(
|
|
181 NotifyCollectionChangedAction action,
|
|
182 IList newItems,
|
|
183 IList oldItems,
|
|
184 int startingIndex)
|
|
185 {
|
|
186 _action = action;
|
|
187
|
|
188 _newItems = newItems;
|
|
189 _newStartingIndex = startingIndex;
|
|
190 _oldItems = oldItems;
|
|
191 _oldStartingIndex = startingIndex;
|
|
192 }
|
|
193
|
|
194 /// <summary>
|
|
195 /// Construct a NotifyCollectionChangedEventArgs that describes a one-item Move event.
|
|
196 /// </summary>
|
|
197 /// <param name="action">Can only be a Move action.</param>
|
|
198 /// <param name="changedItem">The item affected by the change.</param>
|
|
199 /// <param name="index">The new index for the changed item.</param>
|
|
200 /// <param name="oldIndex">The old index for the changed item.</param>
|
|
201 public NotifyCollectionChangedEventArgs(
|
|
202 NotifyCollectionChangedAction action,
|
|
203 object changedItem,
|
|
204 int index,
|
|
205 int oldIndex)
|
|
206 : this(action, new[]{changedItem}, index, oldIndex)
|
|
207 {
|
|
208 }
|
|
209
|
|
210 /// <summary>
|
|
211 /// Construct a NotifyCollectionChangedEventArgs that describes a multi-item Move event.
|
|
212 /// </summary>
|
|
213 /// <param name="action">The action that caused the event.</param>
|
|
214 /// <param name="changedItems">The items affected by the change.</param>
|
|
215 /// <param name="index">The new index for the changed items.</param>
|
|
216 /// <param name="oldIndex">The old index for the changed items.</param>
|
|
217 public NotifyCollectionChangedEventArgs(
|
|
218 NotifyCollectionChangedAction action,
|
|
219 IList changedItems,
|
|
220 int index,
|
|
221 int oldIndex)
|
|
222 {
|
|
223 _action = action;
|
|
224
|
|
225 _newItems = changedItems;
|
|
226 _newStartingIndex = index;
|
|
227 _oldItems = changedItems;
|
|
228 _oldStartingIndex = oldIndex;
|
|
229 }
|
|
230
|
|
231 #endregion
|
|
232
|
|
233 #region Properties
|
|
234
|
|
235 private readonly NotifyCollectionChangedAction _action;
|
|
236 /// <summary>
|
|
237 /// The action that caused the event.
|
|
238 /// </summary>
|
|
239 public NotifyCollectionChangedAction Action
|
|
240 {
|
|
241 get { return _action; }
|
|
242 }
|
|
243
|
|
244 private readonly IList _newItems;
|
|
245 /// <summary>
|
|
246 /// The items affected by the change.
|
|
247 /// </summary>
|
|
248 public IList NewItems
|
|
249 {
|
|
250 get { return _newItems; }
|
|
251 }
|
|
252
|
|
253 private readonly IList _oldItems;
|
|
254 /// <summary>
|
|
255 /// The old items affected by the change (for Replace events).
|
|
256 /// </summary>
|
|
257 public IList OldItems
|
|
258 {
|
|
259 get { return _oldItems; }
|
|
260 }
|
|
261
|
|
262 private readonly int _newStartingIndex = -1;
|
|
263 /// <summary>
|
|
264 /// The index where the change occurred.
|
|
265 /// </summary>
|
|
266 public int NewStartingIndex
|
|
267 {
|
|
268 get { return _newStartingIndex; }
|
|
269 }
|
|
270
|
|
271 private readonly int _oldStartingIndex = -1;
|
|
272 /// <summary>
|
|
273 /// The old index where the change occurred (for Move events).
|
|
274 /// </summary>
|
|
275 public int OldStartingIndex
|
|
276 {
|
|
277 get { return _oldStartingIndex; }
|
|
278 }
|
|
279
|
|
280 #endregion
|
|
281 }
|
|
282
|
|
283 /// <summary>
|
|
284 /// The delegate to use for handlers that receive the CollectionChanged event.
|
|
285 /// </summary>
|
|
286 public delegate void NotifyCollectionChangedEventHandler(object sender, NotifyCollectionChangedEventArgs e);
|
|
287 }
|
|
288
|
|
289 namespace System.Runtime.CompilerServices
|
|
290 {
|
|
291 internal class ExtensionAttribute : Attribute {}
|
|
292 }
|
|
293
|
|
294 #endif |