Kiwicodes.Beacon.HelpCenter.Wpf
1.2.5
dotnet add package Kiwicodes.Beacon.HelpCenter.Wpf --version 1.2.5
NuGet\Install-Package Kiwicodes.Beacon.HelpCenter.Wpf -Version 1.2.5
<PackageReference Include="Kiwicodes.Beacon.HelpCenter.Wpf" Version="1.2.5" />
<PackageVersion Include="Kiwicodes.Beacon.HelpCenter.Wpf" Version="1.2.5" />
<PackageReference Include="Kiwicodes.Beacon.HelpCenter.Wpf" />
paket add Kiwicodes.Beacon.HelpCenter.Wpf --version 1.2.5
#r "nuget: Kiwicodes.Beacon.HelpCenter.Wpf, 1.2.5"
#:package Kiwicodes.Beacon.HelpCenter.Wpf@1.2.5
#addin nuget:?package=Kiwicodes.Beacon.HelpCenter.Wpf&version=1.2.5
#tool nuget:?package=Kiwicodes.Beacon.HelpCenter.Wpf&version=1.2.5
Beacon Help Center (WPF)
A drop-in, themeable customer help center control for WPF — a faithful port of
the Blazor Kiwicodes.Beacon.HelpCenter,
packaged as a control library you can embed in any WPF app. It renders the
knowledge base, the request form and the ticket tracker from a single control.
Point it at your Beacon API and your app's portal key, set a brand colour, and
you're done.
It's built on Kiwicodes.Beacon.Sdk's
BeaconPublicClient, so all calls go through the same public (/public/*)
endpoints — no admin credentials, no HMAC signing required on the client.
The knowledge base opens on a category list (each with a book icon and an article count). It's a two-level accordion: clicking a category expands it to show any articles that sit directly under it, plus its folders (folder icon); clicking a folder expands its articles (document icon). Folders are a single level deep and optional — articles with no folder appear right under their category, and articles with no known category are grouped under General. Typing in the search box lists matching articles across everything.
Install
dotnet add package Kiwicodes.Beacon.HelpCenter.Wpf
This pulls in Kiwicodes.Beacon.Sdk automatically. The project targets
net8.0-windows with WPF.
WebView2 runtime
Article bodies are HTML, so they're rendered with the embedded WebView2
control (Microsoft.Web.WebView2). Most up-to-date Windows machines already have
the Evergreen WebView2 Runtime; if a target machine doesn't, install it from
Microsoft (it ships with current Windows 10/11 and Edge). If the runtime is
missing the control degrades gracefully to a plain-text rendering of the article.
Quick start (XAML)
The control is fully self-contained — it manages its own navigation between the article list, an article, the request form and the ticket tracker. Drop it into any window or page:
<Window ...
xmlns:bk="clr-namespace:Beacon.HelpCenter.Wpf;assembly=Beacon.HelpCenter.Wpf">
<bk:BeaconHelpCenter BaseUrl="https://your-beacon/api/"
PortalKey="pk_live_xxxxxxxx"
PrimaryColor="#e8590c" />
</Window>
BaseUrl— your Beacon API base, including the route prefix (e.g..../api/).PortalKey— your app's portal key (the public key from Beacon's Settings → API Keys). This is what scopes the help center to your app's articles and tickets.PrimaryColor— your brand colour. The header gradient, buttons, links and accent tints are all derived from it.
With dependency injection (optional)
If you'd rather not repeat BaseUrl on every instance, register a client once and
hand the provider to the control:
// App startup
var services = new ServiceCollection();
services.AddBeaconHelpCenter("https://your-beacon/api/");
BeaconHelpCenter.Services = services.BuildServiceProvider();
<bk:BeaconHelpCenter PortalKey="pk_live_xxxxxxxx" PrimaryColor="#e8590c" />
The control resolves its data source in this order: an explicit Client property →
a BeaconPublicClient resolved from BeaconHelpCenter.Services → a client built
from BaseUrl.
Verified users
If your app already knows who the user is, pass their name and email. The request form then pre-fills both fields, makes them read-only, and shows a Verified user badge — so signed-in users don't retype (or mistype) their details:
<bk:BeaconHelpCenter BaseUrl="https://your-beacon/api/"
PortalKey="pk_live_xxxxxxxx"
VerifiedUserName="{Binding User.DisplayName}"
VerifiedUserEmail="{Binding User.Email}" />
Verified mode switches on as soon as VerifiedUserEmail is non-empty. Leave these
unset for anonymous portals and the fields stay editable as normal.
Attachments
Customers can attach files to a new request (up to 10 MB each by default) using the native Windows file picker. Attachments upload after the ticket is created and appear on the ticket view.
<bk:BeaconHelpCenter BaseUrl="https://your-beacon/api/"
PortalKey="pk_live_xxxxxxxx"
AllowAttachments="True"
MaxAttachmentBytes="10485760" />
Set AllowAttachments="False" to hide attachments entirely.
Theming
For most apps, PrimaryColor is all you need. For full control, assign a
HelpCenterTheme — anything you leave unset keeps its default (or is derived from
the primary colour):
helpCenter.Theme = new HelpCenterTheme
{
PrimaryColor = "#0d9488",
PageBackground = "#f7faf9",
GradientAngle = 135,
CardRadius = 18,
FontFamily = "Segoe UI",
};
| Property | Default | Notes |
|---|---|---|
PrimaryColor |
#4d56ec |
Brand colour; drives buttons, links, gradient, tints |
OnPrimaryColor |
white | Text/icons on primary surfaces |
GradientStart / GradientMid / GradientEnd |
derived from primary | Header gradient stops |
GradientAngle |
158 |
Header gradient angle (degrees, CSS convention) |
PageBackground |
#f6f5f2 |
Page background behind cards |
SurfaceColor |
white | Card background |
TextColor / MutedTextColor / FaintTextColor |
warm greys | Text hierarchy |
BorderColor |
#e3ddd4 |
Inputs and dividers |
SuccessColor / DangerColor |
green / red | Confirmations and validation |
CardRadius / ControlRadius |
14 / 10 |
Corner radii (device-independent px) |
FontFamily |
Segoe UI stack | Font for the whole help center |
Each theme value is emitted as a WPF resource (Bk.*) merged into the control, so
the markup references them via {DynamicResource Bk.Primary} etc. — the direct
analogue of the Blazor version's --bk-* CSS custom properties. Colour properties
accept 3/6-digit hex or any WPF named colour.
Control properties
| Property | Type | Description |
|---|---|---|
PortalKey (required) |
string |
Your app's portal/public key |
BaseUrl |
string? |
Beacon API base; used when no Client/DI client is available |
Client |
BeaconPublicClient? |
Supply a pre-configured client instead of BaseUrl |
PrimaryColor |
string? |
Brand colour shortcut (ignored when Theme is set) |
Theme |
HelpCenterTheme? |
Full theme object |
Heading |
string |
Big header text (default "How can we help?") |
Subheading |
string? |
Eyebrow label (default "{App} Help Center") |
VerifiedUserName |
string? |
Pre-fills the requester name (read-only) when verified mode is on |
VerifiedUserEmail |
string? |
Pre-fills the requester email; supplying it enables verified mode + badge |
AllowAttachments |
bool |
Show the file attachment UI on the request form (default true) |
MaxAttachmentBytes |
long |
Per-file size limit in bytes (default 10 MB) |
TicketLinkFormat |
string? |
Template for a shareable tracking link, {id}/{token} substituted |
InitialArticleId |
string? |
Land directly on an article (deep link) |
InitialTicketId / InitialTicketToken |
string? |
Land directly on a ticket |
Notes on the port
This library mirrors the Blazor help center's behaviour and visual design as closely as WPF allows: the same view flow, theming model, knowledge-base accordion, search, request form with live suggestions, and token-gated ticket tracker. The two deliberate platform differences are that article HTML renders through WebView2 (WPF has no native HTML renderer) and attachments use the Windows file picker (there is no MAUI camera option).
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0-windows7.0 is compatible. net9.0-windows was computed. net10.0-windows was computed. |
-
net8.0-windows7.0
- Kiwicodes.Beacon.Sdk (>= 1.2.5)
- Microsoft.Extensions.Http (>= 8.0.1)
- Microsoft.Web.WebView2 (>= 1.0.2592.51)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.2.5 | 158 | 6/23/2026 |