Common-wpf.Utility 2024.1.4.1112

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.1112                
NuGet\Install-Package Common-wpf.Utility -Version 2024.1.4.1112                
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.1112" />                
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.1112                
#r "nuget: Common-wpf.Utility, 2024.1.4.1112"                
#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.1112

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

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 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 403 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 359 1/18/2021
1.0.0 390 1/21/2021