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.