Common-wpf.Settings 2024.1.4.1616

dotnet add package Common-wpf.Settings --version 2024.1.4.1616                
NuGet\Install-Package Common-wpf.Settings -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.Settings" 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.Settings --version 2024.1.4.1616                
#r "nuget: Common-wpf.Settings, 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.Settings as a Cake Addin
#addin nuget:?package=Common-wpf.Settings&version=2024.1.4.1616

// Install Common-wpf.Settings as a Cake Tool
#tool nuget:?package=Common-wpf.Settings&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.
  • 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 209 1/4/2024
2024.1.4.1457 103 1/4/2024
2024.1.4.1256 101 1/4/2024
2024.1.4.1245 132 1/4/2024
2024.1.4.1112 124 1/4/2024
1.1.6 492 9/15/2022
1.1.5 499 9/14/2022
1.1.4 417 8/22/2022
1.1.3 422 8/1/2022
1.1.2 413 8/1/2022
1.1.1 440 6/12/2022
1.1.0 456 4/12/2022
1.0.16 345 9/7/2021
1.0.15 324 9/3/2021
1.0.14 365 6/24/2021
1.0.13 383 6/13/2021
1.0.12 338 6/8/2021
1.0.11 346 6/8/2021
1.0.10 366 4/30/2021
1.0.9 356 4/6/2021
1.0.8 327 4/6/2021
1.0.7 352 3/31/2021
1.0.6 356 3/21/2021
1.0.5 396 1/21/2021
1.0.4 371 1/21/2021
1.0.3 348 1/19/2021
1.0.2 358 1/18/2021