HypernovaDesktop Components · docs
Binarymission

Getting started

Adding a Hypernova control to a project, on either UI stack and any of the supported target frameworks.

Referencing a control

Each control is a single strong-named assembly with no third-party dependencies. Reference it however suits the project — a NuGet package, a direct assembly reference, or a project reference if you hold the source licence.

<PackageReference Include="Binarymission.WinForms.Controls.BinaryPowerTabStrip" Version="8.0.2" />

A few controls build on others; those dependencies come with the package automatically, and each control’s own page lists them under Depends on.

Windows Forms

Build the solution once, and the controls appear in the Visual Studio Toolbox under their own tab, ready to drag onto a form. Everything is also constructible in code:

using Binarymission.WinForms.Controls.TabControls;

var tabs = new BinaryPowerTabStrip
{
    Dock = DockStyle.Fill,
};
tabs.TabPages.Add(new BinaryPowerTabPage { Text = "First" });
Controls.Add(tabs);

The controls are owner-drawn rather than wrappers over the common controls, so appearance properties take effect on every Windows version and visual style identically.

WPF

Map the control’s CLR namespace to an XML namespace and use it directly. Theme resources are merged automatically from the assembly’s Themes/Generic.xaml.

<Window xmlns:bm="clr-namespace:Binarymission.WPF.Controls.Containers;assembly=Binarymission.WPF.Controls.TabControl">
    <bm:TabControl />
</Window>

Controls expose their state through dependency properties, so everything is bindable and animatable, and restyling one means replacing its ControlTemplate rather than subclassing it.

Strong naming and obfuscation

Every shipped assembly is strong-named and protected with .NET Reactor. The public surface is preserved by the protection settings, so reflection over public types and the Windows Forms designer both continue to work; only internal implementation is obscured.

Assembly versions are pinned at the major.minor.0.0 baseline and are not moved for a patch release. Because the assemblies are strong-named, the CLR binds by exact assembly version, so a patch that moved it would stop being a drop-in replacement and would force every consumer to recompile.

Support

Release notes are on the release notes page, and help with a control is on the support page.