Common-wpf.Utility 2024.1.4.1104

There is a newer version of this package available.
See the version list below for details.
dotnet add package Common-wpf.Utility --version 2024.1.4.1104
NuGet\Install-Package Common-wpf.Utility -Version 2024.1.4.1104
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.1104" />
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.1104
#r "nuget: Common-wpf.Utility, 2024.1.4.1104"
#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.1104

// Install Common-wpf.Utility as a Cake Tool
#tool nuget:?package=Common-wpf.Utility&version=2024.1.4.1104

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.
  • 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
2024.1.4.1616 163 1/4/2024
2024.1.4.1457 71 1/4/2024
2024.1.4.1256 76 1/4/2024
2024.1.4.1245 87 1/4/2024
2024.1.4.1112 102 1/4/2024
2024.1.4.1108 93 1/4/2024
2024.1.4.1106 103 1/4/2024
2024.1.4.1104 82 1/4/2024
2024.1.4.1100 78 1/4/2024
2023.5.11.161712 172 5/11/2023
1.0.38 383 9/29/2022
1.0.37 407 9/15/2022
1.0.36 379 9/12/2022
1.0.35 381 9/9/2022
1.0.34 387 8/10/2022
1.0.33 381 8/5/2022
1.0.32 397 8/2/2022
1.0.31 105 8/1/2022
1.0.30 111 8/1/2022
1.0.29 120 8/1/2022
1.0.28 110 8/1/2022
1.0.25 116 7/24/2022
1.0.24 111 7/21/2022
1.0.23 109 7/21/2022
1.0.22 118 6/12/2022
1.0.21 406 9/7/2021
1.0.20 302 9/6/2021
1.0.19 309 9/3/2021
1.0.18 315 9/3/2021
1.0.17 309 6/29/2021
1.0.16 454 6/26/2021
1.0.15 330 6/24/2021
1.0.14 342 6/22/2021
1.0.13 346 6/22/2021
1.0.12 340 6/14/2021
1.0.11 351 6/13/2021
1.0.10 344 5/15/2021
1.0.9 286 5/14/2021
1.0.8 294 3/31/2021
1.0.7 312 3/31/2021
1.0.6 319 3/31/2021
1.0.5 392 1/21/2021
1.0.4 340 10/26/2022
1.0.3 351 1/19/2021
1.0.2 336 1/18/2021
1.0.0 367 1/21/2021