Radical Documentation
View on GitHub
release-2
release-2
  • Home
  • Presentation
    • AbstractViewModel
    • Conventions
      • Bootstrap Conventions
      • Runtime Conventions
      • Conventions override
    • Commands and DelegateCommand
    • IViewResolver
      • Default view behaviors
      • view life cycle events
        • Callback expectations
        • notify messages
    • Message broker MVVM built-in messages
    • Application boot process
      • Application configuration
      • Application shutdown
      • Singleton applications
    • AbstractMementoViewModel
      • Simple ViewModel graphs
      • Collections and complex ViewModel graphs
    • Validation and Validation Services
    • Resources
      • Services as resources
      • ViewModels as resources
    • UI Composition
      • Region content lifecycle
      • TabControl region
      • Create a custom region
  • Concepts
    • Inversion of Control
      • Third party DI containers
    • Entities
      • Property System
    • Messaging and Message Broker
      • POCO messages
      • Standalone message handlers
    • Observers
      • PropertyObserver
      • MementoObserver
      • BrokerObserver
  • Memento
    • Change Tracking Service
      • MementoEntity and MementoEntityCollection
      • Handling change tracking:
        • Simple model
        • Collections
        • Complex objects graph
      • Atomic operations
      • Change Tracking Service API
      • Property Metadata for the ChangeTrackingService
      • Handling collection sync
      • Property State
  • Behaviors
    • DataGrid Behaviors
    • Password
    • Generic routed event handler to command behavior
    • Overlay adorner
      • Busy status manager
    • TextBox behaviors:
      • Command
      • Auto select
      • DisableUndoManager (.Net 3.5 only)
  • Markup Extensions
    • Editor binding
    • Auto Command binding
  • How to
    • Get the view of a given view model
    • Bi-directional communication between different windows/views
    • Handle the busy status during async/long running operations
    • Implement a customer improvement program
    • Manage focus
    • Create a splash screen
    • Access view model after view is closed
    • Intercept ViewModels before they are used
  • Upgrade guides
    • Radical Presentation 1.x to Radical 2.x for .NET Core
Powered by GitBook
On this page
  • Main facts
  • New XML namespaces
  • Breaking changes
  • Message broker IMessage support
  • IEntityView custom properties
  • XML namespaces
  • Removed and changed types and namespaces
  • Behavior changes
  • How to migrate a Radical .NET Framework project to Radical for .NET Core 3
  1. Upgrade guides

Radical Presentation 1.x to Radical 2.x for .NET Core

PreviousIntercept ViewModels before they are used

Last updated 4 years ago

Main facts

Starting with V2 radical Framework supports only .NET Core 3, the Radical package targets netstandard2.0 and the Radical.Windows package targets netcoreapp3.0. WPF .NET Framework (what is generally referred as full framework) projects are not supported.

The Radical.Windows.Presentation package has been merged into Radical.Windows and by default the default IoC container provided by Microsoft.Extensions.DependencyInjection will be used. V2.0.0 supports .

New XML namespaces

New XML namespaces have been defined, the following is the list of the new namespaces:

  • http://schemas.radicalframework.com/windows/behaviors

  • http://schemas.radicalframework.com/windows/input

  • http://schemas.radicalframework.com/windows

  • http://schemas.radicalframework.com/windows/converters

  • http://schemas.radicalframework.com/windows/controls

  • http://schemas.radicalframework.com/windows/effects

  • http://schemas.radicalframework.com/windows/markup

  • http://schemas.radicalframework.com/windows/regions

The existing XML namespaces, starting with http://schemas.topics.it/wpf/radical/*, can still be used but should be considered as obsolete and will be removed in V3.

Breaking changes

Message broker IMessage support

The IMessage interface has been removed, message broker supports only POCO messages in V2.

IEntityView custom properties

Entity view AddPropertyMapping has been renamed to AddCustomProperty, RemovePropertyMapping to RemoveCustomProperty, and IsPropertyMappingDefined to IsCustomPropertyDefined

XML namespaces

  • XML namespace definition http://schemas.topics.it/wpf/radical/windows/presentation/regions changed to http://schemas.topics.it/wpf/radical/windows/regions.

  • XML namespace definition http://schemas.topics.it/wpf/radical/windows/presentation/behaviors changed to http://schemas.topics.it/wpf/radical/windows/behaviors.

Removed and changed types and namespaces

  • EntityValidationService<T> has been removed in favor of DataAnnotationValidationService<T>.

  • ApplicationBootstrapper has been obsoleted in favor of the new AddRadicalApplication<TMainView>() extension method.

    • All virtual members are now sealed.

    • It will be removed in v3.

  • GetValidationService() has been removed from AbstractViewModel and AbstractMementoViewModel. Use the new protected ValidationService property to set the current validation service instance.

  • Radical.Windows.Presentation namespace has been merged into Radical.Windows.

  • the Topics namespace prefix has been dropped, the new root namesapce is Radical.

  • WpfDispatcher type has been made internal.

Behavior changes

  • Services override is not supported anymore. In 1.x it was possible to override an existing radical default service by registering a custom one in the IoC container of choice. The feature wil be reintroduced in a future minor release along with support for external IoC containers

How to migrate a Radical .NET Framework project to Radical for .NET Core 3

  1. Create a new .NET Core 3 WPF project with the same name of the project you want to migrate

  2. Replace the .NET Framework csproj file with the file of the project created at step 1 (the .NET Core project automatically adds all the files found in the current folder of the project, no manual changes are needed)

  3. Create appsettings.json and copy the needed settings from app.config

  4. Delete app.config

  5. If AssemblyInfo.cs contains information that need to be migrated:

    • Rename AssemblyInfo.cs to AssemblyInfo.old.cs

    • Copy AssemblyInfo.old.cs to the root of the project

  6. Delete the Properties folder

  7. Copy AssemblyInfo.cs from the project created on step 1 to the root project folder

    • If needed copy information from AssemblyInfo.old.cs to AssemblyInfo.cs and delete AssemblyInfo.old.cs

  8. Add all the NuGet references a PackageReference to the new project:

    • Take note of the NuGet references from the packages.config file

    • Add the needed references from NuGet

    • Delete packages.config file

  9. "Find and Replace":

    • using Topics.Radical -> using Radical

    • using Radical.Windows.Presentation.ComponentModel -> using Radical.Windows.ComponentModel

    • using Radical.Windows.Presentation.Messaging -> using Radical.Windows.Messaging

    • http://schemas.topics.it/wpf/radical/ -> http://schemas.radicalframework.com/

    • http://schemas.microsoft.com/expression/2010/interactivity -> http://schemas.microsoft.com/xaml/behaviors

    • Broadcast(new CloseViewRequest(this)) -> Broadcast(this, new CloseViewRequest(this))

  10. "Find and Remove"

    • http://schemas.radicalframework.com/windows/presentation/behaviors (behaviors are now in http://schemas.radicalframework.com/windows/behaviors)

    • using Radical.Windows.Presentation.Boot;

  11. Look at all the obsolete warnings and adjust code as necessary

The type Fact has been removed. supports boolean properties and regular property changed notifications.

The RadicalWpfApplication type has been removed. If a DoEvents-like implementation is really needed original code can be copy/pasted from .

Application configuration was previously part of the ApplicationBootstrapper class. Configuration options have been moved to the BootstrapConfiguration class. To customize the Radical application behavior through the BootstrapConfiguration class use the following AddRadicalApplication overload: AddRadicalApplication( config => { ... }). For more information refer to the section.

The AutoComplete behavior has been removed. To replace it, a sample demonstrating how to integrate with a third-party library is available in the .

are supported via generic host support.

Custom IoC registrations require the creation of a .

external DI/IoC containers via generic host support
AutoCommandBinding
GitHub commits history
application configuration
autocomplete sample folder
External IoC containers
dependency installer