Common-wpf.Utility
2024.1.4.1616
dotnet add package Common-wpf.Utility --version 2024.1.4.1616
NuGet\Install-Package Common-wpf.Utility -Version 2024.1.4.1616
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Common-wpf.Utility" Version="2024.1.4.1616" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Common-wpf.Utility --version 2024.1.4.1616
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Common-wpf.Utility, 2024.1.4.1616"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Common-wpf.Utility as a Cake Addin #addin nuget:?package=Common-wpf.Utility&version=2024.1.4.1616 // Install Common-wpf.Utility as a Cake Tool #tool nuget:?package=Common-wpf.Utility&version=2024.1.4.1616
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Common-wpf
A collection of useful libraries for wpf.
All utilities are available as NuGet packages:
Install-Package Common-wpf.Settings
Install-Package Common-wpf.Utility
Common.Settings
A settings system for wpf that allows easy access for both code behind and xaml, with auto-complete and two way bindings.
namespace Example.Settings; //namespace we need to import in xaml (xmlns:settings="clr-namespace:Example.Settings")
public class WindowTitle : Setting<string, WindowTitle>
{
public override string? DefaultValue => "Example";
}
public class ExampleCollection : CollectionSetting<string, Collection>
{
public override IEnumerable<string>? DefaultItems => new[] { "" };
}
public class ExampleDictionary : DictionarySetting<string, string, Dictionary>
{
public override Dictionary<string, string>? DefaultItems => new() { { "testKey", "testValue" } };
}
public class ExampleFlags : FlagSetting<string, Flag>
{
public override Dictionary<string, bool>? DefaultItems => null; //null is default, so no reason to override, but for example purposes
}
<Window
..
xmlns:settings="clr-namespace:Example.Settings"
xmlns:settingsUtility="common://settings"
Width="800" Height="450" WindowStartupLocation="Manual"
Title="{settings:WindowTitle Mode=OneWay}"
Settings.SavePosition="True">
..
</Window>
public Window : System.Windows.Window
{
private void Window_Loaded(..)
{
//Set some new values through code
Settings.WindowTitle.Current.Value = "This is an example";
Settings.ExampleCollection.Current.Add("test");
Settings.ExampleDictionary.Current.Set("test", "value");
Settings.ExampleFlags.Current.Set("test");
Settings.ExampleFlags.Current.Unset("test");
//We delay the actual write for a bit to ensure we don't spam write value to registry.
//While delay duration can be modified using Common.Settings.SettingsUtility.DelayDuration property,
//the following call ensures all pending writes are done at once.
//This is by automatically called during App.Current.Exit event, by default.
Common.Settings.SettingsUtility.SavePending();
//List all settings and values
foreach (var setting in Common.Settings.SettingsUtility.Enumerate())
if (Common.Settings.SettingsUtility.GetJson(setting, out var json))
Debug.WriteLine($"{setting.Name} ({setting.Name}):\n{json}\n");
}
}
Common.Utility
Contains utility functions for wpf.
<Window ..
xmlns:common="http://common"
Common:IsVisibleInAltTab="False">
</Window>
public class Window : System.Windows.Window
{
private void Window_Loaded(..)
{
//Center window on the screen that the window is currently on
this.Center();
this.CenterVertically();
this.CenterHorizontally();
//Restricts window from being moved offscreen (supports multiple monitors)
this.MakeSureVisible();
}
}
public class App : System.Windows.Application
{
void Application_Startup(object sender, StartupEventArgs e)
{
//Makes sure app runs as single instance
if (AppUtility.IsSecondaryInstance(HandleArguments))
{
Shutdown();
return;
}
//Enable auto start, can be bound to using two-way binding
//{Binding Source={x:Static common:AppUtility.AutoStart}, Path=IsEnabled, Mode=TwoWay}
AppUtility.AutoStart.IsEnabled = true;
}
//Handle command line arguements here, which are passed from secondary instance
void HandleArguments(AppArguments arguments)
{ }
}
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net6.0-windows7.0 is compatible. net7.0-windows was computed. net8.0-windows was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net6.0-windows7.0
- ShellUtility.Screens (>= 1.0.50)
- System.Drawing.Common (>= 6.0.0)
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 |
---|---|---|
2024.1.4.1616 | 205 | 1/4/2024 |
2024.1.4.1457 | 101 | 1/4/2024 |
2024.1.4.1256 | 101 | 1/4/2024 |
2024.1.4.1245 | 115 | 1/4/2024 |
2024.1.4.1112 | 131 | 1/4/2024 |
2024.1.4.1108 | 121 | 1/4/2024 |
2024.1.4.1106 | 134 | 1/4/2024 |
2024.1.4.1104 | 110 | 1/4/2024 |
2024.1.4.1100 | 104 | 1/4/2024 |
2023.5.11.161712 | 199 | 5/11/2023 |
1.0.38 | 410 | 9/29/2022 |
1.0.37 | 434 | 9/15/2022 |
1.0.36 | 408 | 9/12/2022 |
1.0.35 | 401 | 9/9/2022 |
1.0.34 | 416 | 8/10/2022 |
1.0.33 | 405 | 8/5/2022 |
1.0.32 | 426 | 8/2/2022 |
1.0.31 | 117 | 8/1/2022 |
1.0.30 | 124 | 8/1/2022 |
1.0.29 | 134 | 8/1/2022 |
1.0.28 | 124 | 8/1/2022 |
1.0.25 | 131 | 7/24/2022 |
1.0.24 | 125 | 7/21/2022 |
1.0.23 | 121 | 7/21/2022 |
1.0.22 | 133 | 6/12/2022 |
1.0.21 | 432 | 9/7/2021 |
1.0.20 | 326 | 9/6/2021 |
1.0.19 | 330 | 9/3/2021 |
1.0.18 | 338 | 9/3/2021 |
1.0.17 | 337 | 6/29/2021 |
1.0.16 | 481 | 6/26/2021 |
1.0.15 | 354 | 6/24/2021 |
1.0.14 | 365 | 6/22/2021 |
1.0.13 | 371 | 6/22/2021 |
1.0.12 | 367 | 6/14/2021 |
1.0.11 | 378 | 6/13/2021 |
1.0.10 | 366 | 5/15/2021 |
1.0.9 | 311 | 5/14/2021 |
1.0.8 | 318 | 3/31/2021 |
1.0.7 | 336 | 3/31/2021 |
1.0.6 | 343 | 3/31/2021 |
1.0.5 | 420 | 1/21/2021 |
1.0.4 | 363 | 10/26/2022 |
1.0.3 | 373 | 1/19/2021 |
1.0.2 | 357 | 1/18/2021 |
1.0.0 | 390 | 1/21/2021 |