Release notes

Release Notes - Catel - Version 4.5.0 - HTML format


  • [CTL-788] - Added new LogEvent called Status which can be used for status updates
  • [CTL-791] - Types with the same FullName from different assemblies will cause issues with the TypeFactory cache
  • [CTL-793] - CheckCanExecuteOfAllCommandsToDetermineCanExecuteForCompositeCommand not respected
  • [CTL-797] - Only set owner window for modal dialogs in UIVisualizerService
  • [CTL-798] - Prevent MissingResourceException when resolving strings for Catel.Core
  • [CTL-799] - Default property values (double) are not being respected
  • [CTL-806] - Allow ValueConverterGroup to contain System.Windows.IValueConverter objects
  • [CTL-810] - QueryableExtension.Include(Expression) collides with EF Include with no Function
  • [CTL-811] - SynchronizationContext - thread racing
  • [CTL-813] - BehaviorBase - AssociatedObject.Unloaded can be called multiple times
  • [CTL-823] - Enum<TEnum>.TryParse with case insensitive does not work
  • [CTL-824] - ModelBase.editableobject should check for duplicated BeginEdit(), EndEdit(), CancelEdit()
  • [CTL-828] - Prevent unnecessary creation of empty dictionary entries in ModelBase
  • [CTL-839] - Windows not exposing the Closed event (such as MahApps ContentDialog) don't close the view model
  • [CTL-854] - FileLogListener initialization in WCF service
  • [CTL-865] - VS 2015 Update 2 breaks IL produced by Catel.Fody on expression argument checks
  • [CTL-875] - AddItems method of FastObservableCollection throws "Range actions not supported." exception
  • [CTL-877] - TypeCache.InitializeTypes with force & assembly should only invalidate specified assembly
  • [CTL-878] - FileLogListener causes UnauthorizedAccessException (Web Application)
  • [CTL-879] - incorrectly localized InfoBarMessageControlErrorTitle
  • [CTL-880] - Sometimes (very rarely) fails to set view model when switching views (loaded, unloaded, loaded) very fast
  • [CTL-882] - Catel.IoC.CircularDependencyException
  • [CTL-885] - AddRange<T>(this ObservableCollection<T> ..)
  • [CTL-887] - GetString in LanguageService does not correctly resolve resources for non-neutral cultures in metro apps
  • [CTL-891] - Prevent duplicate view model creation in nested user controls when the data context hasn't really changed
  • [CTL-892] - ModelBaseExtensions.GetErrorMessage() throws ArgumentNullException
  • [CTL-893] - ThemeHelper should not cache too aggressive, it could result in full refresh of all DataWindows each time a new DataWindow is openened
  • [CTL-895] - Abstraction leak in IDispatcherService
  • [CTL-896] - BehaviorBase could get into a negative loaded count prevent the next load event from being noticed

New Feature

  • [CTL-796] - Add activate existing window methods in IUIVisualizerService


  • [CTL-628] - Support Xamarin.Forms in Catel.MVVM
  • [CTL-775] - Support ReSharper 10 for Catel.ReSharper
  • [CTL-802] - Add async version of OnOkExecute to DataWindow
  • [CTL-817] - Add DynamicObservableObject implementation
  • [CTL-832] - Added ProgressContext to easily allow progress calculation
  • [CTL-883] - Create magic "ViewModelContainer" name so you can define your own view model grid


  • [CTL-622] - ExceptionService with Expression
  • [CTL-764] - Consider caching _dbContext.Set<TEntity>() call in EntityRepositoryBase
  • [CTL-785] - Support expressions in validation result static members
  • [CTL-789] - Improve property handling in the context of RegisterProperties
  • [CTL-792] - Improve property editing performance
  • [CTL-794] - Allow application-wide commands to be executed when child windows have a focus
  • [CTL-800] - UpdatableMarkupExtension should expose IServiceProvider in the ProvideDynamicValue method
  • [CTL-803] - Add RegisterHandler method on IExceptionService
  • [CTL-805] - Add IExceptionHandler<T> to allow custom exceptions handlers in the ExceptionService
  • [CTL-807] - Support enum values in ConfigurationService (and StringToObjectHelper)
  • [CTL-809] - Add CreateTaskCommand method on CommandHelper
  • [CTL-814] - Improve Argument.IsValid implementation to allow more options
  • [CTL-819] - Prevent unnecessary creation of event args in .SafeInvoke when handler is null
  • [CTL-821] - FastObservableCollection improvements (discussion)
  • [CTL-825] - Use NuGet package for behaviors SDK instead of local reference for UWP
  • [CTL-831] - Add RuntimeBindingRedirect that tries to resolve other versions automatically
  • [CTL-842] - Add events to ICacheStorage when items are removed from the cache
  • [CTL-843] - Add ToString implementation for ValidationContext and ValidationSummary
  • [CTL-844] - Create Enum<TEnum>.Flags.GetValues(TEnum enum) to retrieve list of flags
  • [CTL-846] - ObjectConverterService (and thus ConfigurationService) should respect culture on UWP
  • [CTL-848] - CacheStorage - automatically dispose item on removing
  • [CTL-849] - Move ExpressionUtil to Helpers class
  • [CTL-850] - Don't set AssociatedObject to null in IBehavior.Detach for UWP
  • [CTL-856] - SuspendChangeNotifications and NotifyCollectionChangedEventArgs Action
  • [CTL-859] - When resolving types from the service locator (for dependency injection), prefer registered types with the right scope
  • [CTL-861] - Add tag overload to IViewModelFactory to allow resolving of dependencies using tags
  • [CTL-873] - Allow ConfigurationService to store values in separate containers (local and roaming)
  • [CTL-886] - Support AsyncLock in CacheStorage


  • [CTL-745] - Allow DataWindowButton to be bindable (both text and visibility)
  • [CTL-795] - debugging not available anymore
  • [CTL-830] - Close ViewModel if Tab is not active
  • [CTL-852] - Setting the validator in ModelBase (per instance)
  • [CTL-888] - Catel initialization overhead
  • [CTL-889] - Cancelling ViewModel
  • [CTL-898] - Windsor Castle implementation for IServiceLocator

The text area below allows the project release notes to be copied to another document.