SolidShineUi 1.9.0
See the version list below for details.
dotnet add package SolidShineUi --version 1.9.0
NuGet\Install-Package SolidShineUi -Version 1.9.0
<PackageReference Include="SolidShineUi" Version="1.9.0" />
paket add SolidShineUi --version 1.9.0
#r "nuget: SolidShineUi, 1.9.0"
// Install SolidShineUi as a Cake Addin #addin nuget:?package=SolidShineUi&version=1.9.0 // Install SolidShineUi as a Cake Tool #tool nuget:?package=SolidShineUi&version=1.9.0
SolidShineUi UI Library
This is a library containing controls and windows for WPF .NET programs. This library also contains helper classes and functions to customize the UI and provide additional functionality. I use this for all of my modern software projects, and hopefully it will be of use to you as well! This library is created and maintained by JaykeBird (Jayke R. Huempfner).
While a majority of the code and functionality was built by me, a number of controls or functions were originally created by others. Please see the credits on my website for more details (linked below).
The entire library is available under the MIT License.
View more details about this library at my website, jaykebird.com.
Use it now
The library is available on NuGet, or you can download the binaries directly from here.
Getting set up
In your XAML or C# files, you'll want to start by adding a reference to SolidShineUi. Then, you can start referencing the controls below!
xmlns:flat="clr-namespace:SolidShineUi;assembly=SolidShineUi"
using SolidShineUi;
It's also recommended that you set up a ColorScheme for your app, that all the windows and controls can access. Each window and control class below includes a ColorScheme property, which can also be bound.
For example, the way I recommend doing so is starting with placing a static ColorScheme class in your App.xaml.cs file:
public static ColorScheme ColorScheme { get; set; } = new ColorScheme(Colors.Green);
Then, if you use a FlatWindow (rather than the standard WPF Window), you can set it up with the color scheme as below:
<flat:FlatWindow x:Class="MyApp.MyWindow" x:Name="window"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:flat="clr-namespace:SolidShineUi;assembly=SolidShineUi"
mc:Ignorable="d"
Title="My Window" >
<flat:IntegerSpinner ColorScheme="{Binding ColorScheme, ElementName=window}" MinValue="0" />
</flat:FlatWindow>
using System;
using System.Windows;
using SolidShineUi;
namespace MyApp
{
public partial class MyWindow : FlatWindow
{
public MyWindow()
{
InitializeComponent();
ColorScheme = App.ColorScheme; // <--- this sets up the color scheme for the window
}
// the rest of your code-behind as normal
}
}
From here, you should be on your way!
You can use the included SsuiSample app as an example to get started with.
Included
Windows
- FlatWindow - a basic WPF window with a flat appearance and additional functionality
- ColorPickerDialog - a WPF dialog for selecting colors, either from swatches, using sliders, or from an image or color palette file
- MessageDialog - a MessageBox dialog in the FlatWindow/SSUI style, with additional functions and buttons (similar to the Windows TaskDialog)
- StringInputDialog - a WPF dialog to allow users to input a string, similar to the input dialog JOptionPane from Java's Swing library
- FontSelectDialog - a WPF dialog that allows the user to select a font, as well as other properties like size and style
Controls
- ClickSelectTextBox - a TextBox, that automatically selects all the text within when you click on it
- CheckBox - a box that can be checked; it is larger than the standard WPF CheckBox and offers more customization
- ContextMenu - a context menu with a flat style to match the rest of the library
- EnumComboBox - a ComboBox pre-filled with the values of an enumerator
- FileSelect - select one or more files, via the Browse button or drag-and-drop
- FlatButton - a flat-styled button with a lot of customization options (including toggle-button functions)
- DoubleSpinner - also known as a NumericUpDown; select a number by typing it in, clicking up or down, or entering in a math expression
- IntegerSpinner - the same as the DoubleSpinner, but only allows integer values
- LinkTextBlock - a TextBlock that acts as a static hyperlink
- Menu - a menu bar and menu with a flat, colored style
- MenuButton - a flat-styled button that opens a menu when you click on it
- SelectPanel - a powerful panel to easily manage a list and select items from it
- TabControl - a flat-styled tab control, where each tab has a title, icon, and close button
Other Classes
- ArithmeticParser - parse math expressions (
"(5+4)/2"
) quickly and easily. Available separately as well - AutoCompleteBehavior - adds basic auto-complete behavior to text boxes. Available separately as well
- BindableChild - allows you to use WPF binding for a control's Child property (such as the WPF Border control)
- BrushFactory - easy and convenient way to create various brushes
- ColorPaletteFileReader - load a list of colors from various color palette file formats
- ColorScheme - a palette/scheme of colors to use throughout your UI. Generate a scheme from a single base color, or customize it piece-by-piece
- ColorsHelper - contains various methods for interacting with colors and color spaces
- ColorToBrushConverter - a WPF/XAML converter between a Color and a SolidColorBrush
- ImageColorPicker - select colors from an image, used in the ColorPickerDialog
- IKeyAction - represents an action that can occur when a keyboard shortcut is pressed (such as CommandKeyAction and RoutedEventKeyAction)
- KeyboardShortcut - represents a single keyboard shortcut (and the action to take when it is pressed)
- KeyboardShortcutHandler - a helper class that can be added to any WPF window to add keyboard shortcut support
- KeyboardShortcutsIo - a helper class to load/save keyboard shortcut settings to/from a file
- KeyRegistry - represents a list of keyboard shortcuts currently set, and the actions to take when a shortcut is pressed
- SelectableCollection - an extension on ObservableCollection, with additional functions/properties for selecting items in the collection
- SelectableItem - a type of SelectableUserControl; a basic but powerful control to use to display items in SelectPanel
- SelectableUserControl - the base class from which you can create your own controls to use with a SelectPanel
- TabItem - a tab to use with the TabControl
Coming Soon
More controls (including PropertyList and Toolbar) are coming soon! View the roadmap for more details.
Building/Testing
To build this library you will need:
- .NET Framework developer tools (4.7.1 and 4.8)
- .NET Core SDK 3.1 and 5.0
- (In the future, I will be adding AvaloniaUI support, so this will become a requirement as well.)
I recommend using Visual Studio 2019 for this library. When opened up, you should be able to just build and run the library without any further action needed.
Included is the SsuiSample program, which is useful for demonstrating the library and its functions. I also use this to test the library and its controls. Feel free to use SsuiSample as a basis for your implementations.
Keyboard shortcuts
To get started with keyboard shortcut support, I recommend looking at the AddKeyboardSupport file for a step-by-step process and other notes and remarks. Note that this is not a complete drop-in replacement for the InputBindings system in WPF's XAML, but its own system with different advantages.
Notes
If you recieve this message (SourceRoot items must include at least one top-level (not nested) item when DeterministicSourcePaths is true
) when trying to debug, make sure you have Visual Studio set to the Debug configuration, and not the Release configuration (this is the drop-down to the left of the Start button, or you can access it via Build > Configuration Manager... and set the active configuration there).
Credits/Usage
This library is released under the MIT License.
For credits/attribution for when you use the library, please use one of the versions below (the first one is preferred):
Developed/compiled by Jayke R. Huempfner (JaykeBird)
https://jaykebird.com/software/ssui
Contains work by Manuel Schweigert, Pete Laker, Steve Lautenschlager, Richard Moss (Cyotek Ltd.), Warren Galyen (Mechanika Design), Yassine (Stopbyte), Hector Pulido, Sebastien Lambla, Nimgoble, and H.A. Sullivan. See website for more details.
Licensed under MIT License
Developed by Jayke R. Huempfner (JaykeBird), other contributors
https://jaykebird.com/software/ssui
Licensed under MIT License. See website for more details.
The full credits is available on the Credits page on my website.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net5.0-windows7.0 is compatible. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net6.0-windows7.0 is compatible. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp3.1 is compatible. |
.NET Framework | net471 is compatible. net472 was computed. net48 is compatible. net481 was computed. |
-
.NETCoreApp 3.1
- No dependencies.
-
.NETFramework 4.7.1
- No dependencies.
-
.NETFramework 4.8
- No dependencies.
-
net5.0-windows7.0
- No dependencies.
-
net6.0-windows7.0
- No dependencies.
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.9.8 | 186 | 2/24/2024 |
1.9.7 | 219 | 12/11/2023 |
1.9.6 | 328 | 4/19/2023 |
1.9.5 | 354 | 2/11/2023 |
1.9.4 | 390 | 12/1/2022 |
1.9.3 | 382 | 11/18/2022 |
1.9.2 | 551 | 7/12/2022 |
1.9.1 | 561 | 4/5/2022 |
1.9.0 | 503 | 3/27/2022 |
1.8.4 | 497 | 2/25/2022 |
1.8.3 | 401 | 11/10/2021 |
1.8.2 | 474 | 7/19/2021 |
1.8.1 | 456 | 7/3/2021 |
1.8.0 | 500 | 5/30/2021 |
1.7.0 | 466 | 1/31/2021 |
Version 1.9
- Rewrote SelectPanel
- Rewrote FileSelect
- Add new controls: ExperimentalPropertyList and RelativePositionSelect
- Improvements to TabControl and TabItem
Version 1.8.4
- Broke and then fixed TabControl
- Improvements to ColorScheme
- Layout changes in FontSelectDialog
- Improvements to FileSelect control
Version 1.8.3
- Add .NET 6.0 support
- Fix parsing issue with parantheses in ArithmeticParser
- IntegerSpinner and DoubleSpinner can now change height
- Add LeftTabBarElement and RightTabBarElement to TabControl
See website for more details!