forked from canton7/Stylet
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGELOG.txt
360 lines (260 loc) · 12.4 KB
/
CHANGELOG.txt
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
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
Stylet Changelog
================
v1.3.6
------
- If an Action returns a Task, await it in an `async void` method (#53)
- Allow Actions to have explicit targets (`{s:Action ..., Target=...}`) (#177)
- Allow Actions to invoke static methods (#177)
- Actions: if the target does not implement `INotifyPropertyChanged`, still try and evaluate guard properties (#214)
- Add an extra layer to the bootstrapper class hierarchy between `BootstrapperBase` and `Bootstrapper<T>`,
for people who don't have a root ViewModel
- Allow starting the Bootstrapper without an Application (#206)
- Expose SynchronousDispatcher and ApplicationDispatcher to assign to `Execute.Dispatcher` (#217)
- Improve the sample bootstrappers (fix Autofac, add Microsoft.Services.DependencyInjection)
- Improve samples
v1.3.5
------
- Fix namespace in Stylet.Templates, and update for .NET 5
- Throw a better-worded exception if an action finds an ambiguous match
- Fix the Autofac bootstrapper (#158)
v1.3.4
------
- Change activating order when setting active item in ConductorOneActiveBase (#140)
v1.3.3
------
- Rethrow exceptions encountered when setting Conductor.ActiveItem from a binding (#133)
- Fix bug in EventAggregator when publishing to multiple channels (#127)
v1.3.2
------
- Fix the default namespace for projects generated with `dotnet new` (#79)
- Add missing methods to `IWindowManager` (which were present on `WindowManager`) (#113)
- Throw a better exception if someone forgets to call `ToSelf()`, etc (#114)
- Fix exception if someone uses `ToAbstractFactory` on two types with the same name (#123)
v1.3.1
------
- Fix suspect race condition in SingletonRegistration
- Fix typo in README
v1.3.0
------
- Add support for .NET Core
- Add Stylet.Templates NuGet package, containing a .NET Core template
- ViewManager is now singleton (#71)
v1.2.0
------
- Add support for CommandBinding in Actions (#50)
- Allow the owner of a dialog to be explicitly set (#36)
- Deprecate BindWeak (#38)
- Add BindAndInvoke method (#43)
- Add XmlnsPrefixAttribute (#57)
- Stylet.Start creates files as UTF-8 with BOM
- Improvements to the samples
v1.1.22
-------
- Allow custom MessageBox views to be used (#34)
v1.1.21
-------
- Allow Window's Top and Left properties to be set via a binding (#31)
- Stylet.Start saves files as UTF-16 with BOM rather than UTF-8 without BOM (#30)
- Stylet.Start no longer attempts to uninstall itself, as NuGet has apparently broken this (#32)
v1.1.20
-------
- Fix a bug where removing a `Conductor<T>.Collections.OneActive` conductor's ActiveItem would close it, then activate and deactivate it (#27)
- Fix a bug where if a `Conductor<T>.Collections.OneActive` conductor's item was closed, it could be disposed twice (#28)
v1.1.19
-------
- Fix a bug where `Conductor<T>.Collections.OneActive` wouldn't correctly close its children after a call to `this.Items.Clear()`,
or after the conductor was closed.
v1.1.18
-------
- Conductors don't fail if a subclass changes its 'Items' collection when it's activated/deactivated
- Prevent `Conductor<T>.Collection.OneActive` from closing each of its children twice when it is closed
- Fix Screen lifecycle so that it cannot go from Closed -> Deactivated, it must go Closed -> Activated -> Deactivated
- Add a method to ValidatingModelBase to clear all validation errors (useful if you want to re-run validation from scratch)
- Fix some of the example bootstrappers
v1.1.17
-------
- StyletIoC: Dispose instance bindings when the container is disposed (configurable)
- StyletIoC: Detect basic copy constructors, and don't attempt to call them
- Add default TextAligment and FlowDirection properties to MessageBoxViewModel
v1.1.16
-------
- SetAndNotify returns a value indicating whether it raised a notification
- Fix an NRE when running validation in some cases
- Add ValidatingModelBase.RecordPropertyError to manually change property errors
- Deprecate Screen.CanClose: you should use Screen.CanCloseAsync instead
- Deprecate Screen.State, replacing it with Screen.ScreenState
v1.1.15
-------
- Fix re-entrancy issue in the EventAggregator, if you publish events from within an event handler
- Improve Stylet.Start package
v1.1.14
-------
- Fix bug where ViewManager wouldn't search multiple assemblies for Views
- ViewManager searches the assembly containing the ViewModel by default
- Throw (by default) if StyletIoC's ToAllImplementations() doesn't find any implementations
- Fix typo DesignMode sample
v1.1.13
-------
- Catch possible failure inside IconToBitmapSourceConverter
- Fix access modifier on BootstrapperBase.Launch
v1.1.12
-------
- Dispose the RootViewModel on application shutdown (if it's `IDisposable`)
- Rework how `ViewManager` configuration is handled: makes it easier to add a custom ViewManager subclass
- Fix Samples projects
v1.1.11
-------
- Allow an Initial Activate after a Close
v1.1.10
-------
- Fix `Stylet.Start`
v1.1.9
------
- Add a `Stylet.Start` NuGet package, which creates a skeleton project
- Fix samples
v1.1.8
------
- Fix bug where Actions could complain that no suitable method was found, when using `s:View.ActionTarget`
- Remove the Initial screen state. Screens are started on Deactivated
- Allow the ViewManager to be configured, including supporting Views and ViewModels in different namespaces and customizing the 'View' and 'ViewModel' suffixes
- Actions try harder to find a suitable ViewModel, in the case of things like KeyBindings and ContextMenus
- StyletIoC: Allow multiple services to be bound to the same registration (useful for having a single singleton instance used for two interfaces, for example)
v1.1.7
------
- Fix issue where OnInitialActivate may not be invoked if Screen was deactivated before being activated
- Action s:Action to be instantiated with zero parameters
- Make Stylet more modular by removing dependency on Application.Current from WindowManager, and View.ViewManager static property
v1.1.6
------
- s:Action supports a wider range of events (including KeyDown)
- Display a clearer message if the user tries to display a Window using s:View.Model
v1.1.5
------
- Improve memory usage in StyletIoC
- Avoid potential small memory leak in MessageBoxView
- Improve Stylet.Samples.Validation
v1.1.4
------
- Add support for DepencencyPropertyChangedEventHandler to Actions
- Add OnStateChanged hook to Screen
- Re-arrange ViewManager slightly to make it easier to override
- Make the MessageBox display properly with multi-line content and an icon
- WindowManager stes window title if it's the same as the window name (which is the default, set by the VS template)
- Add InverseInstance to BoolToVisibilityConverter
v1.1.3
------
- Fix issue where actions may not fire. Rare case caused by fix from v1.1.2.
v1.1.2
------
- Avoid potential memory leak caused CommandAction and EventAction using DependencyPropertyDescriptor.AddValueChanged
- StyletIoC registers IContainer with the builder by default
v1.1.1
------
- WindowManager.ShowWindow/ShowDialog won't create a new View for the ViewModel if one is already attached
- Add DisposeChildren to IConductor
- Improve error message when WindowManager.ShowWindow/ShowDialog is used to show something that isn't a Window
- Minor semantic fixes and code coverage improvements
v1.1.0
------
- Backwards-incompatible changes to Bootstrapper: Configure is now called *after* ConfigureIoC, OnStart came before ConfigureIoC, and OnLaunch now happens after Launch
- Screen now uses a property enum-based state machine to manage state. IActivate, IDeactivate and IClose have all been rolled into IScreenState
- Fix incorrect use of WeakEventManager in ScreenExtensions: ConductWith won't have been working properly
- Set WindowStartupLocation to CenterOwner if the user hasn't set it themselves
- WindowManager does not set the Title binding (to DisplayName) if it's been set by the user
- Actions throw on execute if ActionTarget hasn't changed from the default. This catches an edge-case where Actions are used inside something like a ContextMenu which breaks the visual tree
-
v1.0.7
------
- Expand IViewManager to add other useful stuff, which ViewManager did anyway
- Conductors now optionally dispose their children, and the WindowManager never does. This is to handle ViewModels which are displayed multiple times e.g. as dialogs
- Conductors now ensure new children are either activated or deactivated. This is to handle child ViewModels which may have been closed previously
- Make BootstrapperBase non-generic, instead having an abstract RootViewModel property. This makes it more flexible.
- Handle null/empty property name in ValidatingModelBase.ValidatePropertyAsync
v1.0.6
------
- Actions can handle attached events
v1.0.5
------
- Code analysis improvements (StyleCop and ReSharper)
- Work around error when showing multiple dialogs after main window has been closed
- Actions unwrap TargetInvocationException, showing the user the actual exception and stack trace
- Accept any (reasonable) event signature for event Actions, not just RoutedEventHandler
- Bootstrapper disposes its container on exit
v1.0.4
------
- Allow IModelValidator to return an IEnumerable<string> rather than a string[]
- Fix up BindableCollection to be thread-safe
- View name resolution is now a bit smarter
- Add design time support
- Add design time sample
- Add sample bootstrapper which does not use an IoC container
- Execute.OnXXX is synchronous by default in unit tests and design time: Execute.TestExecuteSynchronously has been removed
v1.0.3
------
- Remove LambdaComparer and LambdaEqualityComparer - they don't really have a place in a UI framework
- Have different default PropertyChanged and CollectionChanged dispatchers
v1.0.2
------
- Move back to separate arguments for ShowMessageBox - this is more consistent with MessageBox.Show
- ViewManager now accepts an IViewManagerConfig (implemented by BootstrapperBase), which simplifies the IoC container setup
- Add an overridable CanClose() method to screen (called by the CanCloseAsync version by default). This means screens don't have to deal with tasks if they're fully synchronous
v1.0.1
------
- Remove the IoC static service locator. It's no longer needed internally, and I don't want to encourage such bad behaviour. You can write your own easily if you need - see the docs
- Remove the static AssemblySource class, instead using a collection stored on the Bootstrapper
- Add Bootstrappers projects, with sample bootstrappers for a range of IoC containers
- Remove extension methods on IContainer, instead putting them in the interface. This means people don't have to have 'using StyletIoC' in order to see the methods they want to use
v1.0.0
------
- Logging improvements
- ViewManager improvements
- Revamp how the bootloader is added to the Application - it's a lot cleaner now
- Conductors will dispose their children if they're IDisposable
- StyletIoC updates: automatic Func registrations, refactoring, bug fixes, instance binding
v0.9.11
-------
- Add Execute.PostToUIThreadAsync
- Rename ILogger and LogManager to not conflict in projects also using NLog
v0.9.10
-------
- Add the concept of Channels to the EventAggregator
- Remove the WeakEventManager (as it was too complex), and replace with an easier to use (but less powerful) implementation
- Simplify IViewManager
- Add logging to important parts of Stylet
- Fix bug where Actions could throw exceptions when they shouldn't
v0.9.9
------
- Fix bug where Stylet would launch before resources were loaded
v0.9.8
------
- Fix bug with symbols package
v0.9.7
------
- Add ValidatingModelBase
- Increase code coverage to > 99%
- Add MessageBox implementation
- Generate XML documentation
- Misc tweaks and fixes
v0.9.6
------
- Fix bug when starting the bootloader
v0.9.5
------
- Add StyletConductorItemsControl style, for using an ItemsControl with a Conductor<T>.Collection.AllActive
- Make Execute.OnUIThread synchronous, and add BeginOnUIThread (asynchronous)
- Rename conductors. It's now Conductor<T>.Collection.xxx not Conductor<T>.Collections.xxx
v0.9.4
------
- Fix BindableCollection issues
- ActionExtension has configurable behaviour if target/action are null/not found
- ActionExtension works with things like Hyperlinks
- Misc tweaks and fixes
v0.9.3
------
- Fix bootstrapper issues
v0.9.2
------
- Remove debugging from install.ps1 which shouldn't have been there.
v0.9.1
------
Initial release