In This Article

Converting to v25.1

The 25.1 version made a number of infrastructure updates and improvements.

New Targets

All NuGet packages include a new target for .NET 8.

NuGet packages for the SyntaxEditor Text assemblies have been moved from .NET 6 to .NET 8. Those who still need to support older versions of .NET can use the .NET Standard 2.0 targets.

NuGet packages no longer include the legacy .NET Core 3.1 target. This target was previously used to support .NET Core 3.1 and .NET 5, neither of which are still supported by Microsoft. Projects that target .NET should be moved to .NET 6 or greater.

The .NET Framework configurations are unchanged.

Visual Studio 2019 Support Removed

Visual Studio 2019 does not support .NET 6 or higher, so it can no longer be used to build .NET applications that use Actipro components. Applications that target .NET Framework should continue to work, but compatibility is no longer verified with new releases.

Bars RibbonBackstageTabViewModel Content Updates

The RibbonBackstageTabViewModel class added new Content, ContentTemplate, and ContentTemplateSelector properties.

Previously, most backstage tab view models would typically use an implicit DataTemplate based on the derived view model type. To continue using an implicit DataTemplate in this manner, most view models that derive from RibbonBackstageTabViewModel will need to initialize the Content property to an instance of the view model since the Type of the Content will determine the implicit DataTemplate. The following example demonstrates this approach:

public class CustomRibbonBackstageTabViewModel : RibbonBackstageTabViewModel {

	public CustomRibbonBackstageTabViewModel()
		: base("BackstageTabCustom", "Custom") {

		// Use this tab viewmodel as content
		Content = this;
	}

}

Alternatively, the new properties allow for updated configurations where an explicit DataTemplate can be defined directly on the view model.

Bars MVVM Tag Property

To simplify storing user-defined data with Bars view models without the need to create custom derived classes, each view model has a new Tag property exposed using the IHasTag interface. The existing IBarGalleryItemViewModel interface was updated to also import the new IHasTag interface, so this is a breaking change for any user-defined types that implement IBarGalleryItemViewModel directly without deriving from BarGalleryItemViewModel<T>.

The following updates should be made to any class that implements IBarGalleryItemViewModel:

  • Add a declaration and implementation for the IHasTag.Tag property.

Docking SingleTabLayoutBehavior Updates

To support the new TabbedMdiHost.SingleTabLayoutBehavior property, the ToolWindowContainer.SingleTabLayoutBehavior property was moved to the base class as DockingWindowContainerBase.SingleTabLayoutBehavior.

Docking AdvancedTabControl Key Access Gestures

The individual tabs of AdvancedTabControl can be accessed using modifiers keys and the position of the tab. For example, Ctrl+2 will activate the second tab in the normal state. Previously, keys 9 and 0 would access the ninth and tenth tabs, respectively. The behavior of the 9 key has been changed to activate the last tab instead of the ninth tab, which is consistent with modern web browser applications. The 0 key is no longer used.

In addition, tabs in the preview state, which were previously not accessible by a keyboard shortcut, can now be accessed using Ctrl+Shift+1 through 9.

No application logic updates should be required for this change, but user documentation may need to be updated.

SyntaxEditor Intra-Text Adornment Placement Updates

This version enhances the Intra-Text Adornments feature with the ability to position the intra-text adornment after the tagged text range instead of before. This option is handy for scenarios such as when AI suggestions should be displayed at the end of a line, after the last character.

The IsSpacerBefore property was added to the IIntraTextSpacerTag interface to support this new option. Any classes implementing this interface should return true for this property to retain prior version functionality where the adornment appears before the tagged range.