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                
#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                

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 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.

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 202 1/4/2024
2024.1.4.1457 98 1/4/2024
2024.1.4.1256 100 1/4/2024
2024.1.4.1245 114 1/4/2024
2024.1.4.1112 129 1/4/2024
2024.1.4.1108 118 1/4/2024
2024.1.4.1106 132 1/4/2024
2024.1.4.1104 105 1/4/2024
2024.1.4.1100 102 1/4/2024
2023.5.11.161712 196 5/11/2023
1.0.38 409 9/29/2022
1.0.37 433 9/15/2022
1.0.36 406 9/12/2022
1.0.35 400 9/9/2022
1.0.34 413 8/10/2022
1.0.33 404 8/5/2022
1.0.32 424 8/2/2022
1.0.31 116 8/1/2022
1.0.30 123 8/1/2022
1.0.29 133 8/1/2022
1.0.28 122 8/1/2022
1.0.25 130 7/24/2022
1.0.24 123 7/21/2022
1.0.23 119 7/21/2022
1.0.22 132 6/12/2022
1.0.21 429 9/7/2021
1.0.20 325 9/6/2021
1.0.19 329 9/3/2021
1.0.18 337 9/3/2021
1.0.17 334 6/29/2021
1.0.16 480 6/26/2021
1.0.15 351 6/24/2021
1.0.14 364 6/22/2021
1.0.13 370 6/22/2021
1.0.12 364 6/14/2021
1.0.11 377 6/13/2021
1.0.10 364 5/15/2021
1.0.9 310 5/14/2021
1.0.8 317 3/31/2021
1.0.7 333 3/31/2021
1.0.6 342 3/31/2021
1.0.5 419 1/21/2021
1.0.4 359 10/26/2022
1.0.3 372 1/19/2021
1.0.2 355 1/18/2021
1.0.0 389 1/21/2021