- WAF:
RecentFileList: Add aClearmethod. - WAF:
TraceSourceExtensions: Enable AggressiveInlining for better performance. - Samples: Migrate from MEF to AutoFac.
- Samples: Set
AssemblyTitleforFileDescription. Read by Task Manager. - Writer: Simplify the initialisation of the
RecentFileList. - InfoMan: Refactor
IDocumentServiceto improve testability. - InfoMan: Remove
ShellServiceand simplify dependencies. - NewsReader: Improve the save implementation. Do not save upon deactivation anymore on Windows.
- NewsReader: Remove the MS Graph SDK and use a plain HttpClient instead. This reduces the size of the app and improves efficiency.
- NewsReader: Improve load, save and OneDrive sync.
- NewsReader: Improve the language setting.
- NewsReader: Improve the styling of the navigation buttons.
- NewsReader: Set the UI style to light on iOS. Dark mode is not supported by the custom styling.
- NewsReader: Set to Light mode in MAUI and on Android. Disable support for the dark mode theme.
- NewsReader: Enable compiled bindings.
- NewsReader: Use GitHub Actions to create Windows packages for x64 and arm64 with a self-signed certificate.
- NewsReader: Add a UITest solution for Android, iOS and Windows using Appium.
- NewsReader: Execute UITest for Android and Windows automatically via GitHub Actions.
- WAF: Add
TaskHelper.Runoverloads withCancellationTokensupport. - WAF:
ThrottledAction: Improve performance of the implementation. - NewsReader: Migrate to MAUI 9 / .NET 9.
- BookLib: Use async methods for database access and improve the error handling.
- Samples: Improve logging of unhandled exceptions.
- Samples: Reference ValueConverters via
x:Staticinstead ofStaticResource. - UITest: Migrate to FlaUI 5 and extend the UI tests.
- WAF:
WeakEvent: Fixed removing of the target handler. Under certain circumstances, the wrong weak handler was collected by the garbage collector. - WAF:
ObservableList: Fixed adding the same item multiple times. - Writer: Supports command line language settings.
- BookLibrary: Fixed loading of assemblies when CurrentDirectory is not the application folder.
- BookLibrary: Supports command line language settings.
- UITest: Automated UI tests for the Writer and Book Library sample application using the FlaUI library.
- WAF: Add generic version of
MockViewandMockDialogViewfor the view model. - Writer: Added an integration unit test.
- NewsReader: Remove AppCenter support as this service is beeing discontinued by Microsoft.
- WAF:
ObservableListViewCoreuses weak events to listen for theCollectionChangedevent. - OBSOLETE: WAF: Mark
ObservableListView(WPF) as obsolete.
- WAF:
ObservableListuses weak events to listen for thePropertyChangedevent of its items.
- WAF: Add
INotifyCollectionChangingandINotifyCollectionItemChangedinterface. - WAF: Add
IDelegateCommandinterface for theRaiseCanExecuteChangedmethod. - BREAKING: WAF:
IReadOnlyObservableListinterface inherits additional fromINotifyCollectionChangingandINotifyCollectionItemChanged. - WAF:
ReadOnlyObservableListimplementsINotifyCollectionChangingandINotifyCollectionItemChanged. - WAF:
ObservableListViewBaseimplementsINotifyCollectionChangingandINotifyCollectionItemChanged. - WAF: Add
ObservableListclass which inherits fromObservableCollectionand provides support forINotifyCollectionChangingandINotifyCollectionItemChanged. - WAF: Add
SynchronizingListwhich is an improved version ofSynchronizingCollectionCore. It supports full two-way synchronization. - OBSOLETE: WAF: Mark
SynchronizingCollectionCoreandSynchronizingCollectionas obsolete. - OBSOLETE: WAF: Rename
SettingsServiceCoretoSettingsService; keep old class name for backward compatibility and mark it as obsolete. - WAF: Add static
DelegateCommand.RaiseCanExecuteChanged(..)method. - WAF: Add
AsyncDelegateCommand.ExecuteAsyncmethod. - WAF:
WeakEventadds support for the eventsCollectionChangingandCollectionItemChanged. - WAF: Add static
WeakEvent.TryRemovemethod. - WAF:
MockViewadds support forBindingContext. - WAF: Move
MockSettingsServiceto UnitTesting.Core. - Samples: Migrate to .NET 8.0.
- Samples: Use new
ObservableListandDelegateCommand.RaiseCanExecuteChanged. - Samples: Add shortcut to open log file (CTRL+SHIFT+L).
- NewsReader: Migrate to MAUI 8 / .NET 8.
- NewsReader: Extend unit testing and migrate to xUnit.
- WAF: Add .NET 6.0 target for all libraries. Some new features will only be available for .NET 6 or newer applications.
- WAF: Replace target net461 with netstandard2.0 for the Core libraries.
- BREAKING: WAF: Replace target net461 with net472 for the WPF libraries. Breaking change as .NET Framework 4.61 up to 4.71 is not supported anymore.
- BREAKING: WAF: Remove .NET Core 3.1 target from WPF libraries. Breaking change for .NET Core 3.1 and .NET 5: WPF libraries do not provide the transitive dependency to WPF and Composition anymore. These references must be set explicitly.
- WAF: Remove
StringHelper.Containsmethod for the .NET 6 target and greater. Those targets support this method already out of the box. - WAF:
IView: Add propertyBindingContext(for MAUI) with a default implementation (requires .NET 6). - WAF:
IReadOnlyObservableListinherit fromINotifyPropertyChanged. - WAF: Improve performance of
CollectionHelper.IndexOfby usingEqualityComparer<T>. - WAF: Improve performance by replacing Tuple(s) with ValueTuple(s).
- WAF:
ObservableListViewBase.DeferCollectionChangedNotifications: Improve implementation. - Samples: Target framework .Net 6.0.
- Samples: Update NuGet packages.
- Samples: Simplify and modernize code.
- Samples: Improve validation of window position and size before restoring them.
- Writer: Writer: Refactor code base so that WPF and File IO based classes are now in Presentation layer.
- InfoMan: Add
ShellService.CommitUIChanges. - NewsReader: Migrate NewsReader to VS2022.
- NewsReader: Update Android to target v12 SDK 31.
- WAF: Update version number.
- WAF: WPF: Add new
Bindclass which is a culture aware binding implementation.
- WAF: Add
Model.RaisePropertyChangedoverload to notify that multiple properties have changed. - WAF: WPF: Add new overloads for
MessageServiceExtensions. - WAF: UnitTesting: Add new stub properties for
MockMessageServiceandMockFileDialogService.
- WAF: Improve
Model.SetPropertyto avoid boxing of value types. - WAF: Improve
ValidationResultComparer.
- WAF: Add
ObservableListViewBase.DeferCollectionChangedNotificationsmethod.
- WAF:
TraceSourceExtensionsimprove nullable annotations.
- WAF: Extend
WeakEventclass to support weak events for static events in a platform independent way.
- WAF:
StringHelper.Truncateimprove nullable annotation.
- WAF: Add
ValidationHelperclass and use it inValidatableModelinstead of Validator. Now, theValidatableModellists all found validation errors and the validation method is faster.
- WAF:
WeakEvent: multiple calls ofRemovemust remove handler just once. - WAF: Use new
WeakEventimplementation inObservableListViewandSynchronizingCollection.
- WAF:
WeakEventkeep event handler alive throughout the lifetime of the target.
- WAF: Add
WeakEventclass which provides weak event implementations for the most common events in a platform independent way. - Samples: Improve logging.
- WAF:
ViewModelCore.Initializecalls firstOnInitializeand then sets theDataContext.
- WAF: Update version numbers.
- WAF: Add
TraceSourceExtensionsclass.
- WAF: Add
InitializetoViewModelCoreand introduce theIViewModelCoreinterface. - Samples: Add nullable annotations
- WAF: WPF libraries added support for .Net Core 3.1.
- WAF: Add nullable annotations which are used by C# 8.0 Nullable Reference Types support.
- BREAKING: WAF Remove obsolete method
CollectionHelper.Empty. - WAF: WPF unit tests run now on .NET Core 3.1 and on .NET Framework 4.6.1.
- BookLibrary: Migrate Entity Framework Core 2.2 to Entity Framework Core 3.1.
- Writer: Move creating the XAML print preview into Presentation layer as it depends on the Dispatcher thread.
- Samples: Target multiple frameworks (runtimes): .Net Core 3.1 and .NET Framework 4.7.2.
- Samples: Run unit tests on all targeted frameworks: .Net Core 3.1 and .NET Framework 4.7.2.
- All: Migrate all projects (csproj) to the new Project SDK format.
- All: Improve code by using C# 8.0.
- Build: Visual Studio 2019 (Version 16.4) or newer is required.
- WAF: Update version numbers.
- WAF:
UserSettingsBaseinherits now fromModel.
- WAF: Move
ApplicationInfoclass from WPF to Core assembly. - WAF: Add
SettingsServiceCoreclass in Core assembly.
- WAF: Update version numbers.
- WAF: Improve error handling of the
SettingsService. - Samples: Use the new Project SDK format for the csproj files.
- BookLibrary: Migrate Entity Framework 6 to Entity Framework Core 2.2
- BookLibrary: Refactor the Entity Framework integration so that unit testing of the Application layer is easier.
- BookLibrary: Improve unit tests by using EF Core InMemoryDatabase.
- Samples: Change some projects to target .NET Standard 2.0.
- WAF: Core projects target now .Net Standard 2.0 and .NET Framework 4.6.1.
- WAF: Core unit tests run now on .NET Core 2.1 and on .NET Framework 4.6.1.
- OBSOLETE: WAF: Mark
CollectionHelper.Emptyas Obsolete. - WAF: Use new NuGet package creation features.
- All: Improve code by using C# 7.0.
- Samples: Migrate csproj files to use PackageReference instead of packages.config.
- Build: Visual Studio 2017 (Version 15.9) or newer is required.
- WAF: Improve deserializing in
SettingsService.
- WAF: Add
SettingsServicefor WPF applications. - WAF: Add overload
DataGridHelper.GetSortingwith custom primary sort. - WAF: Add
AssertHelper.SequenceEqualto UnitTesting. - WAF: Improve
AssertHelper.ExpectedExceptionby returning the expected exception for further investigation. - Samples: Use new
SettingsService. - Samples: Introduce logging to a file with NLog.
- WAF: Add
StringHelper.Containsmethod withStringComparisonargument. - WAF: Add
TaskHelperclass. - WAF: Add
CollectionHelper.Mergemethod. - WAF: Add the
ObservableListView,ObservableListViewCoreandObservableListViewBaseclass. - WAF: Add the
DataGridHelperclass with sort support. - InfoMan: Replace
CollectionViewwith the newObservableListView. - InfoMan: Replace
SettingswithSettingsProviderservice. - BookLibrary: Replace
CollectionViewwith the newObservableListView. - Samples: Simplify code.
- Samples: Fix blurring error template rectangle.
- WAF: Update version number.
- BREAKING: WAF: Change
ValidatableModelto match theINotifyDataErrorInfo.GetErrorsdescription. - WAF:
ThrottledAction: Improve performance of InvokeAccumulated. - WAF: Remove the
FileType.FileExtensionlimitation that it has to start with a '.' point character. - BREAKING: WAF: Change
FileTypeto exposeFileExtensionscollection instead ofFileExtensionwith the concatenated string. - WAF: Add
NullToVisibilityConverterclass. - WAF: Add
ResourceHelperclass. - Samples: Improve WPF design time support.
- InfoMan: Improve validation logic (Replace custom
ValidationModelclass withValidatableModel). - BookLibrary: Improve validation error style.
- WAF: Update version number.
- WAF: Fix metadata of *.Core NuGet packages.
- WAF: Add extension method
IndexOfforIEnumerable<T>. - WAF: Fix NuGet package creation bat file (nuget parameters were not passed correctly).
- WAF: Fix Dispose enumerator in
GetNextElementOrDefault. - WAF: Support
nullinBoolToVisibilityConverterandInvertBooleanConverter. - WAF: UWP
IsVisibleneeds to considerVisibilityas well inLazyContentPresenter.
- WAF: Fix UWP NuGet package creation
- WAF: Change the WAF Core assemblies to PCL Profile7 (portable-net45+win8)
- WAF: Change other assemblies to TargetFrameworkVersion 4.6.1
- BREAKING: WAF: The WAF assemblies are not signed with the strong name anymore.
- WAF: Improve
ValidatableModelto support correct WPF Binding validation for whole object validation. - BREAKING: WAF: Remove
ValidatableModel.ValidatePropertybecause it allows to create inconsistent error states. - WAF: New implementation for
ThrottleAction(Timer is not supported by PCL Profile7). - WAF: Improve implementation of
ApplicationInfo. - WAF:
UnitTestSynchronizationContext: Fix CreateCopy method. - BookLibrary: Migrate DB from SQL Compact to SQLite.
- Writer: Replace RibbonWindow with Window to fix the border issues.
- WAF: Remove all types from the Applications layer in the
System.Waf.Uwpproject. An UWP Applications layer should only reference the Core library. - WAF: Refactor the
ViewModelCoreandViewModelbase classes.
- WAF: Fix TargetName in NavigationToggleButton.
- WAF: Add
CollectionHelper.Emptymethod that returns an emptyIReadOnlyList<T>. - WAF:
DelegateCommand: Add static propertyDisabledCommand. - WAF: Enhance the
StringFormatConverterto support MultiBinding.
- WAF:
DelegateCommand.Executedoes not throw an exception anymore whenCanExecutereturns false. - WAF: NavigationToggleButton uses now IconElement instead of Symbol.
- WAF: Fix IsVisible implementation in LazyContentPresenter.
- WAF: Update Microsoft.NETCore.UniversalWindowsPlatform to 5.1.0
- WAF: Add
System.Waf.Uwpproject with initial support for UWP App development. - WAF: Add
SynchronizingCollectionCoreclass and adapt theSynchronizingCollectionclass. - WAF: Add public
DispatcherHelper.DoEventsimplementation. - WAF: Add
StringHelper.Truncateimplementation. - InfoMan: Improve UI styling for better text alignment.
- Samples: Enhance WPF design time support.
- WAF: Provide a core package of WAF as reusable portable library.
- WAF: Improved
ViewModelimplementation for fasterDataContextinitialization when using MEF. - WAF: Add
AsyncDelegateCommandclass. - WAF: Change TargetFrameworkVersion to v4.6 for WPF applications.
- WAF: Removed types and members that were marked as obsolete in version 3.
- WAF: Removed serialization support because the portable library does not support it.
- Samples: Improve code by using C# 6.0.
- InfoMan: Introduce a custom ToolBar style.
- WAF: Add
Cacheclass. - WAF: Enhance the
AssertHelpermethodsCanExecuteChangedEventandPropertyChangedEvent. - WAF: Automatic cleanup of
MockDialogView.ShowDialogActionwhen the MEF container gets disposed. - BookLibrary: Update to EntityFramework version 6.1.3.
- BookLibrary: Add a ViewCache to improve start-up performance.
- InfoMan: Use
IReadOnlyObservableListinterface so that casting is not necessary anymore. - Samples: Replace
IEnumerable<T>withIReadOnlyList<T>for a lot members.
- WAF: Add
IReadOnlyObservableListinterface and provide theReadOnlyObservableListclass that implements this interface. - WAF:
SynchronizingCollectionimplements theIReadOnlyObservableListinterface. - WAF: Add
ThrottledActionclass. - WAF: Add a constructor for
FileTypethat allows to specify multiple file extensions. - WAF: Add
UnitTestSynchronizationContextandUnitTestSynchronizationContextExtensionsclass. - Writer: Rename
ApplicationControllerintoModuleController.
- Update the documentation.
- Samples: Use ValueConverters via
StaticResourceinstead ofx:Static.
- WAF: Change the
ValidationErrorsConverterto a multi value converter. This way it is possible to fix an update issue. - OBSOLETE: WAF: The usage of the ValidationErrorsConverter as a value converter is obsolete. Use it now as a multi value converter.
- BookLibrary: Update the usage of the
ValidationErrorsConverter. - InfoMan: Update the usage of the
ValidationErrorsConverter. - InfoMan: Persist the data via
DataContractSerializerand Package API. - Samples: Fix the ResourceDictionaries and the DesignTimeResources.
- Samples: Simplify the implementation for unhandled exceptions.
- WAF: Add the
ValidatableModelclass that implements theINotifyDataErrorInfointerface. - WAF: Improve
ValidationErrorsConverterto supportValidationResultobjects as well. - BookLibrary: Refactor the domain objects to use the new
ValidatableModelclass. - InfoMan: Refactor the
PresentationServiceimplementations to overcome a WPF bug. - Samples: Fix bug in upgrade the settings file from a previous version.
- WAF: Improve thread-safety of
ApplicationInfo. - BookLibrary: Upgrade to Entity Framework 5 and use the code first approach.
- BookLibrary: Use
CustomValidationto validate thePublishDatefield. - BookLibrary: Improve the workaround that the DataGrid might become read only when an invalid cell is ignored.
- Samples: Upgrade the settings file from a previous version.
- Unit tests: Refactor the namespaces so that unit tests start with
Test. - Unit tests: Add runsettings configuration file to exclude the unit test projects from code coverage.
- WAF: Add
BoolToVisibilityconverter. This one allows inverting the result as well. - WAF: Add reusable Mock classes in the UnitTesting project.
- Samples: Enable multicore JIT to improve the app launch performance.
- Writer: Replace the menu and toolbar with Ribbons.
- Writer: Show recent file list in the application menu of the Ribbons.
- InfoMan: Replace the own EmailValidationAttribute with the .NET EmailAddressAttribute.
- InfoMan: Some usability improvements.
- BookLibrary: Fix DataGrid bug that when an invalid row is deleted then no other cell could be edited anymore.
- OBSOLETE: WAF:
WafConfiguration.Debugproperty is obsolete because it is not used anymore by the infrastructure. - OBSOLETE: WAF:
Controllerbase class is obsolete because the Add/RemoveWeakEventListener methods are not needed anymore with the newPropertyChangedEventManagerandCollectionChangedEventManagerimplementation. - OBSOLETE: WAF:
DataModelbase class is obsolete because the Add/RemoveWeakEventListener methods are not needed anymore with the newPropertyChangedEventManagerandCollectionChangedEventManagerimplementation. - WAF: Add the
SetPropertymethod and update theRaisePropertyChangedmethod with the[CallerMemberName]attribute in theModelclass. - Snippets: Adapt the
wafpropncode snippet to create the simplified property setter. - Samples: Update all properties to use the new set property infrastructure.
- Samples: Replace all
AddWeakEventListenercalls with the new methodPropertyChangedEventManager.AddHandler. The same is done for allRemoveWeakEventListenercalls. - Samples: Replace all
DataModelclasses withModelclasses - Samples: Remove all
Controllerclasses. - Samples: Use
ExportFactory<T>instead of theCompositionContainer.
- BREAKING: All: Upgrade all projects to target .NET Framework 4.5.
- BREAKING: WAF: Remove the
ConverterCollection. Please use the compatibleSynchronizingCollectioninstead. - BREAKING: WAF: Remove the second
ViewModelconstructor with theisChildparameter. - BREAKING: WAF: Remove the
StringBuilderExtensionsclass. Please use thestring.Join(Environment.NewLine, stringList)method instead of theAppendInNewLineextension method. - WAF: Remove weak event workaround from
DelegateCommandbecause the memory leak is fixed in .NET 4.5. - Samples: Use new MEF diagnostics settings (
CompositionOptions.DisableSilentRejection). - BookLibrary: Upgrade the database to SQL Server Compact 4.0.
- Update the documentation.
- InfoMan: Write the documentation.
- WAF: Fix recent file list remove issue.
- WAF: Minor code improvements.
- BookLibrary: Fix Blend design time support of ReportView.
- InfoMan: Minor improvements.
- All: Update architecture layer diagrams.
- All: Unit tests: Improve TestClassBase implementations.
- WAF: Mark the class
DataModelas serializable. - InfoMan: Minor improvements.
- InfoMan: Add unit tests for all modules.
- WAF: Add
CollectionHelper.GetNextElementOrDefaultmethod. - InfoMan: Support creating a new email and saving it in the Send box.
- InfoMan: New email: Select the email addresses from the address book.
- InfoMan: Show the number of items in the navigation pane.
- InfoMan: Support the deletion of emails.
- InfoMan: Add SearchBox control in Common.Presentation and use it in the EmailClient and the AddressBook module.
- InfoMan: Add design data to the AddressBook views.
- InfoMan: Add the AddressBook module.
- InfoMan: Add a toolbar which can be manipulated by the modules.
- InfoMan: Improve focus handling and add further access keys.
- InfoMan: Update the architecture diagram.
- BookLibrary: Improve performance of the filter if no FilterText was entered.
- WAF: Add
IsInDesignModeproperty to theWafConfigurationclass. - WAF: Introduce the
IModuleControllerinterface. - WAF: Add
InvertBooleanConverterclass. - Writer: Apply new namespace schema.
- InfoMan: Replace the EmailClient application with the new modular Information Manager sample application.
- BookLibrary: Add ItemsElement which works in a FlowDocument similar as an ItemsControl.
- BookLibrary: Add a new report to list all borrowed books.
- OBSOLETE: WAF: Mark the
StringBuilderExtensionsclass as obsolete because theAppendInNewLinemethod can be replaced withstring.Join. - OBSOLETE: WAF: Mark the
ConverterCollection<TNew, TOld>as obsolete. - WAF: Introduce the
SynchronizingCollection<T, TOriginal>which does the same as theConverterCollectiondid. - BookLibrary: Refactor the App.xaml.cs bootstrapping code to support modules and extensions.
- BookLibrary: Read the simple module/extension configuration from the App.config file.
- BookLibrary: Add the reporting extension.
- BookLibrary: Add a report (FlowDocument) with design time preview in the Visual Studio WPF Designer or Expression Blend.
- BookLibrary: Add BindableTable and ContentElement to support binding in a FlowDocument.
- BookLibrary: Update the EntityController to support SQL Compact Edition 4.0. Note: The BookLibrary is still using SQL CE 3.5.
- OBSOLETE: WAF: Mark the ViewModel constructor with the child parameter as obsolete.
- WAF: Introduce a
Removemethod in the RecentFileList class. - BookLibrary: Fix the missing update of the person name in the BookListView and BookView.
- Writer: Add a context menu for the recent file list which allows the user to remove files.
- Writer: FileController.OpenCore removes the file from the RecentFileList when the file was not found.
- WAF: Add
ValidationHelperclass which helps to determine if a View is valid. - WAF: Implement the
DelegateCommand.CanExecuteChangedevent as weak event. This is a workaround for a WPF 4 memory leak. - WAF: Fix a potential memory leak in
AssertHelper. - BookLibrary: Replace manual validation tracking code with the new ValidationHelper.
- BookLibrary: Add error handling for the create email operation.
- EmailClient: Replace manual validation tracking code with the new ValidationHelper.
- Samples: Hide the red validation error rectangle in all TextBoxes.
- BookLibrary: Fix a bug in the validation detection.
- EmailClient: Fix a bug in the validation detection.
- Writer: Fix design time support.
- Samples: Rewrite the documentation.
- WAF: Ensure that the methods of the
DataErrorInfoExtensionsnever return null. - WAF:
ApplicationInfo.ApplicationPathreturns an empty string instead of null when the entry assembly doesn't exist. - Writer: Modify the printing and the XPS export to use a one column instead of two column page printing.
- Writer: Set keyboard focus into the text after closing the PrintPreview view.
- BookLibrary: Improve focus handling and add access keys for the first label in the detail views.
- EmailClient: Improve focus handling.
- EmailClient: Change wizard button text from Next to Finish when the last page is shown.
- EmailClient: Show a tooltip with explanations for a disabled Back or Next button.
- BREAKING: WAF: Change
IFileDialogServiceinterface to get the owner passed in the methods. - BREAKING: WAF: Change
FileDialogServiceimplementation to get the owner passed in the methods. - BREAKING: WAF: Change
IMessageServiceinterface to get the owner passed in the methods. - BREAKING: WAF: Change
MessageServiceimplementation to get the owner passed in the methods. - WAF: Extend the
FileDialogServiceExtensionsto support all method overloads without the owner parameter as well. - WAF: Add the
MessageServiceExtensionsclass to support all method overloads without the owner parameter as well. - Writer: Adapt the application to pass the owner to the FileDialogService and the MessageService.
- Writer: Add a transition animation when the start page is replaced with the document page and vice versa.
- Writer: Refactor the DocumentManager into a FileController and a FileService.
- BookLibrary: Adapt the application to pass the owner to the MessageService.
- WAF: Introduce the
RecentFileListclass. - Writer: Use the RecentFileList and show the recent files in the menu and the start page.
- Writer: Add the start page.
- Writer: Enable the application to open files which are opened directly with the Windows Explorer.
- Note: To see this feature you must register the .rtf file extension with the Writer.exe file. You might do this with the Windows Explorer's Open With context menu and then select Choose Default Program.
- Writer: Implement an error handling when a file cannot be opened or saved.
- Writer: Show the active document name in the window title.
- Writer: Implemented the spell checking feature of WPF with a custom Context Menu.
- Note: If it doesn't work then you might have to install a .NET Framework language pack first.
- BREAKING: WAF: Make base classes
abstract:Model,DataModel. - BREAKING: WAF: Rename static class
ViewExtensionstoViewHelper. - Writer: Use consistent dialog result handling for modal dialogs.
- Writer: Change zoom behavior.
- Writer: Add formatting: Bold, Italic, Underline, Numbered List, Bullet List, Decrease Indentation and Increase Indentation.
- Writer: Add context menu for RichTextBox.
- BookLibrary: EntityObservableCollection executes the ObjectSet operations before it raises the CollectionChanged events.
- BREAKING: WAF: Extend
IMessageServicewith two new methods for asking the user a question. This replaces the BookLibrary IQuestionService. - BREAKING: WAF: Change the base type of the
ConverterCollectionfrom ObservableCollection to ReadOnlyObservableCollection. - WAF: Extend the
FileDialogServicebehavior: The directory name of the parameterdefaultFileNameis used as initial directory. - WAF: Add the
StringFormatConverter. - WAF: Extend the
ApplicationInfoclass with the newApplicationPathproperty. - Writer: Save and restore window location and size.
- BookLibrary: Save and restore window location and size.
- BookLibrary: Enable sorting of the Lend To column.
- BookLibrary: Deploy the database file from the application directory into the user data directory.
- BookLibrary: Bugfix: Select the correct item after an item is deleted from a sorted/filtered DataGrid.
- WAF: Add new class
DataModel. - WAF: Add new class
ConverterCollection. - BookLibrary: Use Template column type for the Lend To column and allow the user to open the Lend To dialog via cell click. This feature uses the new DataModel and ConverterCollection class.
- BookLibrary: Use Hyperlink column type for the email address column and allow the user to create a new email via click.
- BookLibrary: Simplify the EntityObservableCollection by using the new
IObjectSet<T>interface. - BookLibrary: Select the next remaining element after removing of DataGrid elements.
- BookLibrary: Bugfix: When the DataGrid is in edit mode then the Search box doesn't work anymore (Exception).
- BookLibrary: Bugfix: When the DataGrid is in edit mode and a new Item is added the Search box and the Del key doesn't work anymore.
- BookLibrary: Use DataGrid for the tables.
- BookLibrary: Use DatePicker for PublishDate.
- BookLibrary: Implement search (filter) feature.
- BookLibrary: Improve validation support for the ShellWindow.
- BookLibrary: Improve keyboard navigation via access keys.
- BookLibrary: Improve ShellWindow design time support.
- Writer: Remove the Ctrl+Tab shortcut because the TabControl supports this out of the box.
- EmailClient: Improve validation support for the wizard.
- Samples: Use a consistent way to access the associated ViewModel inside a View (code-behind).
- Samples: Improve MenuItem.InputGestureText.
- WAF: Add a new helper extension method for the string builder.
- WAF: Add new validation extension methods for the
IDataErrorInfointerface. - WAF: Add the
DataErrorInfoSupportclass which brings theIDataErrorInfowith theDataAnnotationsvalidation together. - WAF: Add the
ValidationErrorsConverterwhich can be used to bind the ToolTip to the error messages. - BookLibrary: Update the validation code to use the DataAnnotations validation.
- EmailClient: Add validation support for the wizard.
- EmailClient: Minor update in Controllers.
- Remove the ShortcutKey sample application
- Update Architecture project
- Update ShortcutKey documentation
- BREAKING: Change all projects to .NET Framework 4 Client Profile.
- BREAKING: Upgrade the solution and project files to Visual Studio 2010.
- Add an Architecture project which verifies the layer dependencies in Release mode.
- Fix and suppress code analysis warnings.
- ShortcutKeySample: Use Binding for the KeyBinding Command property.
- Writer: Use Binding for the KeyBinding Command property.
- BookLibrary: Use Binding for the KeyBinding Command property.
- BookLibrary: Add DesignData for better design time support.
- Minor improvements in the samples.
- Documentation updated.
- BREAKING: WAF: Moved Model class from System.Waf.Domain into the System.Waf.Foundation namespace.
- ShortcutKey: Minor updates
- LocalizationSample: Minor updates
- ViewModel: Minor updates
- Writer: Minor updates
- BookLibrary: Minor updates
- BREAKING: WAF: Moved Model class from System.Waf.Domain into the System.Waf.Foundation namespace.
- WAF: Improved the unit tests and increased the code coverage.
- BookLibrary: Create unit tests for the Presentation and Applications project.
- BookLibrary: Minor changes in bootstrapper (App.xaml.cs)
- EmailClient: Minor code improvements
- BookLibrary: Rewrite the validation part - implement
IDataErrorInfo. - Use the new version of MEF Preview 9.
- Add new code snippet
wafvalconvwhich creates a WPF value converter class. - Add the new design time tags for Visual Studio 2010 data binding support.
- EmailClient: Fix minor issue in WPF styles
- BookLibrary: Fix minor issue in WPF styles
- BookLibrary: General code improvements
- WAF: Minor code improvements found with code inspection.
- BookLibrary: Add a new sample application which uses the Entity Framework and the SQL Server CE.
- Writer: Add PresentationController to initialize the correct current culture.
- Writer: Minor style improvements
- EmailClient: Minor style improvements
- BREAKING: WAF: Rename
ViewModel<T>.Viewproperty toViewCoreand change it from public to protected. - BREAKING: WAF:
ViewModel.Viewproperty exposes now onlyobjectand notIView. - WAF: Add new argument null checks in public methods.
- BREAKING: UnitTesting: Remove the
DispatcherUtilclass because theDoEventsmethod is not necessary anymore. - BREAKING: UnitTesting: Rename the
AssertUtilclass toAssertHelper. - Writer: Add the introduction Readme.doc.
- Writer: Bug fix for DocumentManager Save handling.
- Writer: Minor improvements in the Writer sample application.
- BREAKING: Remove the IWeakEventListener interface and the ReceiveWeakEvent method from the Controller and the ViewModel base class. Use the AddWeakEventListener method instead.
- Use the new version of MEF Preview 8.
- Add code snippets for common developer tasks.
- Add print preview and print functionality in the Writer sample application.
- Add
WafConfiguration.Debug. When this property is set to true then WAF helps to find coding errors. - Add the
AssertUtil.CanExecuteChangedEventmethod. - Add unit tests for the Writer sample application.
- Minor improvements and bug fixing in the Writer application.
- Note: WAF requires the
System.ComponentModel.Composition.dlllibrary since this version. - Add method
AddWeakEventListenerandRemoveWeakEventListenerto Controller and ViewModel base class which simplifies the use of the weak event pattern. - OBSOLETE: Mark the method 'ReceiveWeakEvent' in Controller and ViewModel as obsolete.
- Add the
GetViewModelextension method for the IView interface. - Add a basic message service (IMessageService)
- Add a basic file dialog service (IFileDialogService)
- Writer: A new sample application which is more a realistic than the other samples.
- Simplify unit testing of ViewModel implementations (
DispatcherUtil.DoEventsis not necessary anymore) - Improve caching of ApplicationInfo properties
- Add Company property to ApplicationInfo class
- Use the new version of MEF Preview 7 for the ViewModel sample
- Use the new version of MEF: Preview 6
- Minor corrections in the Readme documentations
- Add the
AssertUtil.ExpectedException<T>method and adapt the unit tests to use this method instead of the[ExpectedException]attributes. - Fix bug in LocalizationSample/App.config
- Add Readme.doc to Localization Sample
- Add Readme.doc to ShortcutKey Sample
- Add Readme.doc to ViewModel Sample
- Initial version