Stylet/CHANGELOG.txt

347 lines
12 KiB
Plaintext

Stylet Changelog
================
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