How should we contact you? Let us know!

Catel 3.6

Note that we recommend that you install Catel via NuGet.

Click here to manually download this release

Release notes for Catel 3.6

(+) Added
(*) Changed
(-) Removed
(x) Error / bug (fix)


Version 3.6

Release date:

(*) Moved all generic methods from the ServiceLocator to IServiceLocatorExtensions so its easier to implement the IServiceLocator
interface. It also gives us more freedom in the future to develop new features around the service locator. In very rare cases,
this will be a breaking change. To fix this, simply include the Catel.IoC namespace.
(*) [CTL-69] Updated FluentValidation extension to FluentValidation 4. Because this new version no longer supports SL4, the SL4 version
of the extension is also dropped
(*) [CTL-71] Updated CSLA to version 4.5.20. Because this new version no longer supports SL4, the SL4 version of the extension is also dropped
(*) [CTL-74] Catel no longer subscribes to MessageMediator in ViewModelBase by default. If users want this behavior, they can implement it in
their own ViewModelBase (deriving from Catel VMB), but not all users have to experience this negative impact on performance

(+) [CTL-29] Added circular dependency protection to the TypeFactory. This means that if there are types with a circular dependency using
dependency injection, the TypeFactory will throw a CircularDependencyException with the exact type path which was used to create
the type instead of a StackOverflow without any info
(+) [CTL-36] Added batches to the MementoService which now allows to easily group multiple actions together in a batch
(+) [CTL-64] Added property bag to allow easy property registration of dynamic objects
(+) [CTL-67] Added IContextFactory to allow customization of DbContext instantiation
(+) [CTL-56] Added ThrottlerRate to allow the throttling of change notifications to the UI to bring down the frame rate of applications
so the CPU can be used for other tasks instead
(+) [CTL-43] Added ValidateModelAttribute to specify external IValidator classes via annotations at Class level
(+) [CTL-55] ValidationContext now contains modification methods and the IValidator contains a Validate method which accepts a
ValidationContext. This way it should be easier to write simple validators and modify the existing validation context
(+) [CTL-75] Added FrameRate counter for WPF to easily measure the frame rate of an application
(+) [CTL-88] Added SelectDirectoryService to let the user select a directory
(+) [CTL-82] Added ViewModelToViewConverter to Silverlight projects
(+) [CTL-85] Added ServiceDependency markup extension to Silverlight 5 project (MarkupExtension is not supported in SL4)
(+) [CTL-91] Added ViewExportService to print or save a visual element that belongs to a view model
(+) [CTL-94] Added SchedulerService which allows to schedule actions in the relative or absolute future
(+) Added the IExceptionService.IsExceptionRegistered method to know if an exception type is registered for handling
(+) Added BindingWithValidation for NET40 and NET45 where {catel:BindingWithValidation MyProp} can now be used instead of
{Binding Path=MyProp, NotifyOnValidationErrors=True, ValidatesOnDataErrors=True}
(+) Added IMessageMediator.IsMessageRegistered to know if a message type is registered
(*) [CTL-51] Allow ViewModelFactory to determine whether a view model can be reused
(*) [CTL-32] Changed UnitOfWork.SaveChanges default options to SaveOptions.DetectChangesBeforeSave | SaveOptions.AcceptAllChangesAfterSave
(*) [CTL-31] The MVC dependency resolver now also supports dependency injection in non-abstract non-registered classes (such as controllers)
(*) [CTL-35] Performance improvement on first validation sequence for non-existing properties in ModelBase
(*) [CTL-44] External container synchronization for the ServiceLocator now respects both Singleton and Transient registration types in the
the external containers unless they don’t support this information (such as MEF and Castle Windsor)
(*) [CTL-68] Command now dispatches events which is a major performance improvements when properties are changed from a background thread
(*) [CTL-57] Performance improvements. Among these changes were disabling the reflection cache (was actually slower), disabling the default
subscription to MessageMediator (see CTL-74) and the introduction of the IDependencyPropertySelector. For more information about
performance, please check out the performance considerations:
(*) [CTL-84] All converters based on ValueConverterBase can now be chained after eachother by using the Link property
(*) [CTL-86] Improved DoubleClickToCommand behavior for grids
(*) [CTL-83] ChangeNotificationWrapper now supports both collection and property changes at the same time
(*) [CTL-81] Prevent a change in case the validationsummary has not changed which should improve performance in some cases. Note that for this
to be reliable, Catel uses the Stopwatch instead of DateTime because DateTime is not accurate enough. Since the Stopwatch is only available
in the full .NET framework, all other target frameworks will always assume a validation context or summary is outdated
(*) [CTL-87] The TypeFactory circular dependency protection now ignores if duplicate types are requested directly
after eachother. This might result in unwanted behavior if the same type is used as injection in the same
type, but these cases are very rare. This changes fixes an issue where prism resolves the same type several times
after eachother
(*) CTL-96 Fixed unreliable loaded event in Silverlight (and WP and WinRT) which sometimes did not behave top => down on controls like the
tab control. We fixed this by adding a FrameworkElementLoadedManager which will handle the right order of events for Catel
(-) Removed EffectsHelper class from Catel.Extensions.Controls because it was already included in Catel.MVVM
(x) [CTL-20] Fixed issue where the WeakEventListener could not handle explicitly implemented events
(x) Fixed issue where default values were not correctly subscribed to via weak events. This caused the protected change notifications
not to work for default values
(x) [CTL-34] Fixed Windows Phone issue with the Lazy<T> class (which was used by the Argument checks)
(x) Fixed issue in DragDrop behavior where DragStarted was called to many times
(x) [CTL-46] Fixed issue where in some very rare cases (when the same view model is used in views in the same chain of views), the UserControlLogic
would cause a StackOverflow when saving or canceling a view model
(x) [CTL-61] Fix very rare cases of bad inheritance of view models in LogicBase
(x) [CTL-65] Fixed issue where process tools in the EnvironmentHelper were not ignoring case for “blend.exe” and “devenv.exe”
(x) [CTL-66] AutoRegistrationManager for ServiceLocator causes deadlock in design time
(x) [CTL-72] Serialization issue with very complex hierarchies and xml serialization
(x) [CTL-41] Silverlight TypeCache doesn’t load types from mscorlib and system
(x) [PR-3] Added support for KnownTypeAttribute with method name instead of a type


Known issues:

Back to Top
Fork me on GitHub