Library / SDK
Panuon/Panuon.WPF.UI avatar
Panuon/Panuon.WPF.UI

Panuon.WPF.UI styles a WPF app through attached properties

Professional wpf ui library.

1,286 stars122 forksC#Apache-2.0

At a glance

What is it?
Panuon.WPF.UI is a WPF control library for .NET Framework and .NET Core that lets you restyle a button or a text box through attached properties in the way Material Design does, with a resource dictionary for the whole application, per-control styles for a partial opt-in, and a samples project that shows what each pattern looks like. It began as Panuon.UI.Silver, was renamed at version 2.2.20, and ships on NuGet under the Panuon.WPF.UI package.
Who is it for?
Panuon.WPF.UI is worth considering if you are maintaining a WPF desktop application on .NET Framework and want a modern look without pulling in a large design system, because the attached property model means you can restyle a single control without touching the rest of the window, and the sample pages give a fair estimate of the code cost.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 129 days ago.
What is it written in?
Mainly C#, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 21, 2026, and from our analysis. They are not legal advice.

Editorial analysis

Restyle one control, or the whole application

The library is described as a professional UI engine for customization, and the claim is that Panuon.WPF.UI lets you achieve the desired UI effect with minimal code. The mechanism is attached properties, and the README is explicit that you use them like Material Design does, although there is no relationship between the two libraries. The first route is the blunt one. You add a resource dictionary to your App.xaml, and that dictionary pulls in every style:

xml
xmlns:pu="https://opensource.panuon.com/wpf-ui"
...
<pu:StyleDictionary Includes="All" />

The second route is the interesting one, because you can style a single button without changing anything else in the window. The attached properties carry the values that a Material Design library would carry:

xml
xmlns:pu="https://opensource.panuon.com/wpf-ui"
...
<Button Width="150"
        Height="35"
        Background="#6CBCEA"
        pu:ButtonHelper.CornerRadius="5"
        pu:ButtonHelper.HoverBackground="#6CA3EA"
        pu:ButtonHelper.ClickBackground="#83A6D4" />

The corner radius, the hover background and the press background are attached properties on a helper class, so a control that has no styling of its own picks up a rounded, state-aware button with three lines of markup.

A third route for the middle ground

There is a third option that the README presents separately, and it exists for the case where you want the library's styles for some controls and not for others. The instruction is to use the styles without affecting other controls, and the way to do that is a key only style dictionary, which you use instead of the full one:

xml
xmlns:pu="https://opensource.panuon.com/wpf-ui"
...
<!--Don't add <pu:StyleDictionary Includes="All" />-->
<pu:KeyOnlyStyleDictionary Includes="Button,TextBox" />

Then the control has to ask for the style explicitly, because a key only dictionary registers the styles as resources without applying them:

xml
<Button Width="150"
        Height="35"
        Style="{StaticResource {x:Static pu:StyleKeys.ButtonStyle}}"
        Background="#6CBCEA"
        pu:ButtonHelper.CornerRadius="5"
        pu:ButtonHelper.HoverBackground="#6CA3EA"
        pu:ButtonHelper.ClickBackground="#83A6D4" />

That is the arrangement for an existing application, where switching the whole application to a new style dictionary would change screens that somebody spent a week making look right. The three routes scale from a whole-application restyle to a single control, and the difference between them is one line of markup plus, in the third case, a Style attribute.

The samples are the argument, with line counts attached

The README pitches the library with pages rather than with adjectives, and it puts a number next to each one. The report page, Samples/Views/Examples/ReportView.xaml, took 261 code lines to implement in Panuon.WPF.UI. The Visual Studio 2019 simulation took 293 lines. The Netease Music simulation took 272. And the sign in example took 187. The instruction is to download the repository to get the source code, and the screenshots of each page are in a separate documents repository. The line counts are the interesting part, because they are a claim about productivity stated in units a reader can check, since the sources are in the repository. The sample project itself is a conventional WPF solution with an App.xaml, a Themes/ directory, a Resources/ directory, a Views/ directory and a Models/ directory, and the Sample.sln at the root of Samples, so the whole thing is buildable rather than a set of screenshots.

Two product lines, one of them renamed

The upgrade note is the part to read before you start, and it is emphatic. Do not directly upgrade from Panuon.UI.Silver 1.x to Panuon.UI.Silver 2.2 or Panuon.WPF.UI 1.x, because there are significant differences in how these versions are used. The history is that since Panuon.UI.Silver 2.2.20 the library has been renamed Panuon.WPF.UI, and the specific upgrade method is in a wiki document that currently only supports Chinese. The NuGet badges show that both names are still in circulation, with a download badge for Panuon.UI.Silver next to the one for Panuon.WPF.UI, so the old package name still gets downloads and a project starting today has to choose deliberately rather than by accident. The licence is Apache 2.0 with a LICENSE file at the root, which is the permissive terms that make the library easy to embed in a commercial desktop application.

The framework targets, and the documentation gap

The badges in the header state the supported frameworks, which is the first thing to check in a WPF library. There is .NET Framework 4.5 and above, .NET Core 3.1, .NET 5 and .NET 6, with a Visual Studio 2019 or newer badge, and the package itself is on NuGet as Panuon.WPF.UI. The gap in that list is not the framework versions but the language of the documentation, and the README states it in one line: only Chinese documentation is now available. The Chinese wiki document is the reference, the repository has a readme.cn.md beside readme.md, and there is a QQ channel linked for the community. That is a real constraint for a non-Chinese-speaking team, because the wiki is where the upgrade procedure, the full control list and the theme documentation live, and the English README covers the three usage patterns and nothing else. The repository also has a docs/ directory and a SourceCode/ directory, and the last push was on 2026-06-16 while the most recent published package, version 1.3.0.2, dates from 2025-03-20, after a 1.3.0-beta in January 2025 and a 1.2.4.7 in October 2024.

Where a WPF control library fits, and where it does not

The honest scope is a WPF control kit for existing Windows desktop applications, and there are three reasons a team outside that scope would look elsewhere. The first is that WPF is one UI stack. The library styles WPF controls, so a project on WinForms, on Avalonia or on MAUI gets nothing from it, and the Visual Studio 2019 and Netease Music samples are WPF pages, not portable ones. The second is the age of the published packages. The newest one on NuGet is from March 2025 and the framework list stops at .NET 6, so a new project on a current .NET would be building against a library whose newest release predates it, and the repository is being worked on but not releasing. The third is the alternative that already exists in this space, since the attached property pattern the library uses is the one Material Design established, and the README itself notes the resemblance while making the point that the two libraries are unrelated. A team that wants that pattern with a maintained ecosystem and English documentation has a different library to evaluate, and the comparison to make is the control catalogue, the theme story and the documentation, not the attached property syntax, which is the one part that is not the hard part.

Editorial conclusion

Panuon.WPF.UI is worth considering if you are maintaining a WPF desktop application on .NET Framework and want a modern look without pulling in a large design system, because the attached property model means you can restyle a single control without touching the rest of the window, and the sample pages give a fair estimate of the code cost. It is the wrong tool if you are starting a new .NET desktop application, since the library targets WPF only and its newest published package is from March 2025. Before you adopt it, read the Chinese wiki, because that is the only documentation, and check the upgrade note, since the jump from Panuon.UI.Silver 1.x to 2.2 or Panuon.WPF.UI 1.x changed how the library is used and the project warns against going straight there.

Frequently asked questions

How do I add Panuon.WPF.UI to a WPF application?

Add the resource dictionary to your App.xaml, with the xmlns:pu="https://opensource.panuon.com/wpf-ui" declaration and a <pu:StyleDictionary Includes="All" /> element. You can then use the attached properties such as pu:ButtonHelper.CornerRadius and pu:ButtonHelper.HoverBackground on individual controls, or use a <pu:KeyOnlyStyleDictionary Includes="Button,TextBox" /> if you want to opt in per control.

What changed between Panuon.UI.Silver and Panuon.WPF.UI?

Since Panuon.UI.Silver 2.2.20 the library has been renamed Panuon.WPF.UI. The README warns explicitly not to upgrade directly from Panuon.UI.Silver 1.x to Panuon.UI.Silver 2.2 or Panuon.WPF.UI 1.x, because there are significant differences in how those versions are used, and points to a wiki document for the upgrade procedure.

Which frameworks does Panuon.WPF.UI support?

The badges list .NET Framework 4.5 and above, .NET Core 3.1, .NET 5 and .NET 6, with Visual Studio 2019 or newer. The package is published on NuGet as Panuon.WPF.UI, and the older Panuon.UI.Silver package is still distributed as well.

Where is the documentation for Panuon.WPF.UI?

Only Chinese documentation is available, through the Chinese wiki document linked from the README, with a Chinese readme in the repository as readme.cn.md. The English README covers the three usage patterns, the sample pages and the upgrade warning.

Official sources

  1. Issues
  2. License: Apache-2.0
  3. Panuon/Panuon.WPF.UI on GitHub
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/panuon-panuon-wpf-ui.svg)](https://hysenlabs.com/projects/panuon-panuon-wpf-ui)

Was this useful?