UToolKit 1.0.1.1

There is a newer version of this package available.
See the version list below for details.
dotnet add package UToolKit --version 1.0.1.1                
NuGet\Install-Package UToolKit -Version 1.0.1.1                
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="UToolKit" Version="1.0.1.1" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add UToolKit --version 1.0.1.1                
#r "nuget: UToolKit, 1.0.1.1"                
#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 UToolKit as a Cake Addin
#addin nuget:?package=UToolKit&version=1.0.1.1

// Install UToolKit as a Cake Tool
#tool nuget:?package=UToolKit&version=1.0.1.1                

UToolKit

Library that contains useful tools for WPF application.
It is recommended to use this library with Fody.PropertyChanged.

Release notes:

  • Added ControlExtensions with FousMode attached property.

Main features:

  • ObservableObject (INotifyPropertyChanged implementation)
  • IRefreshableCommand (inherits ICommand, allows to call ICommand.CanExecuteChanged manually)
  • RelayCommand (IRefreshableCommand implementation)
  • RelayAsyncCommand (IRefreshableCommand async implementation)
  • RelaySingleTaskAsyncCommand (IRefreshableCommand async implementation, designed for single task execution)

Converters:

  • InverseBooleanConverter
  • BooleanToVisibilityConverter
  • BooleanToHiddenVisibilityConverter
  • InverseBooleanToHiddenVisibilityConverter
  • InverseBooleanToVisibilityConverter

Extensions:

  • ControlExtensions
    • FousMode - focus mode for Control. There is two modes: Default and FocusOnLoad.
  • HyperlinkExtensions
    • IsExternal - if true Hyperlink will execute Process.Start using Hyperlink.NavigateUri after click.
  • WindowExtensions
    • CloseCommand - command which executes on windows closing. If ICommand.CanExecute() returns false - window closing will be cancalled.
    • CloseCommandParameter - parameter for CloseCommand.
    • PlacementStorageStrategy - window placement storage strategy. There are 2 different implemented strategies, RegistryStorage and SettingsStorage. It is possible to implement custom strategy using IWindowPlacementStorage.
  • RoutedCommand bindings - allows to bind ICommand to RoutedCommand.

Services:

  • IWindowService - (implementation: WindowService)
    • IsActive - indicates whether the window is active.
    • IsVisible - indicates whether the window is visible.
    • Activate() - attempts to brind the window to the foreground and activates it.
    • Close() - closes window.
    • Close(bool dialogResult) - closes window with specified dialog result.
    • Hide() - hides window.
    • Show() - shows window.
  • ITextBoxService - (implementation: TextBoxService)
    • event TextChanged - informs that the text has changed.
    • event SelectionChanged - informs that the selection has changed.
    • Text - allows to get or set text to TextBox (will not break bindings).
    • CaretIndex - gets current caret index.
    • SelectionLength - gets selected text length.
    • SelectedText - gets or sets selected text in text box (will not break bindings).
    • Select(int start, int length) - selects a range of text in text box.
    • SelectAll() - selects all text in text box.
  • IPasswordSupplier - (implementation: PasswordSupplier)
    • event PasswordChanged - occurs when the password of the PasswordBox changes.
    • Password - allows to get or set password from/to PasswordBox.
    • SecurePassword - gets secure password from PasswordBox.
    • Clear() - clears all password.

Getting started.

First you need to include namespace to your code or markup.

For XAML it can look like:

<Window xmlns:tk="https://github.com/nullsoftware/UToolKit" />

And for C#:

using NullSoftware;
using NullSoftware.Services;
using NullSoftware.ToolKit;
using NullSoftware.ToolKit.Converters;
using NullSoftware.ToolKit.Extensions;

Examples:

How to set PlacementStorageStrategy:

<Window xmlns:tk="https://github.com/nullsoftware/UToolKit" 
        xmlns:prop="clr-namespace:ExampleProject.Properties"
        tk:WindowExtensions.PlacementStorageStrategy="{tk:RegistryStorage NameFormat=Placement, Hive=CurrentUser, Key='SOFTWARE\MyCompany\MyApp'}" />

or

<Window xmlns:tk="https://github.com/nullsoftware/UToolKit" 
        xmlns:prop="clr-namespace:ExampleProject.Properties"
        tk:WindowExtensions.PlacementStorageStrategy="{tk:SettingsStorage Settings={x:Static prop:Settings.Default}}" />

How to use RoutedCommandHandlers:

<Window xmlns:tk="https://github.com/nullsoftware/UToolKit">
    <tk:RoutedCommandHandlers.Commands>
        <tk:RoutedCommandHandler RoutedCommand="ApplicationCommands.Create" Command="{Binding CreateCommand}"/>
        <tk:RoutedCommandHandler RoutedCommand="ApplicationCommands.Open" Command="{Binding OpenCommand}"/>
    </tk:RoutedCommandHandlers.Commands>
    
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition/>
        </Grid.RowDefinitions>
        
        <Menu Grid.Row="0">
            <MenuItem Header="_File">
                <MenuItem Header="_New" Command="ApplicationCommands.Create" />
                <MenuItem Header="_Open" Command="ApplicationCommands.Open" />
            </MenuItem>
        </Menu>
    </Grid>
</Window>
Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net5.0-windows7.0 is compatible.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net6.0-windows7.0 is compatible.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net7.0-windows7.0 is compatible.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp3.0 is compatible.  netcoreapp3.1 is compatible. 
.NET Framework net452 is compatible.  net46 is compatible.  net461 is compatible.  net462 is compatible.  net463 was computed.  net47 is compatible.  net471 is compatible.  net472 is compatible.  net48 is compatible.  net481 was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • .NETCoreApp 3.0

    • No dependencies.
  • .NETCoreApp 3.1

    • No dependencies.
  • .NETFramework 4.5.2

    • No dependencies.
  • .NETFramework 4.6

    • No dependencies.
  • .NETFramework 4.6.1

    • No dependencies.
  • .NETFramework 4.6.2

    • No dependencies.
  • .NETFramework 4.7

    • No dependencies.
  • .NETFramework 4.7.1

    • No dependencies.
  • .NETFramework 4.7.2

    • No dependencies.
  • .NETFramework 4.8

    • No dependencies.
  • net5.0-windows7.0

    • No dependencies.
  • net6.0-windows7.0

    • No dependencies.
  • net7.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
1.1.1 218 5/17/2023
1.1.0.1 272 2/25/2023
1.1.0 251 2/24/2023
1.0.2 264 2/24/2023
1.0.1.1 304 1/28/2023
1.0.0.1 333 12/18/2022
1.0.0 327 12/16/2022
0.0.8.1-alpha 171 12/16/2022
0.0.8-alpha 172 12/16/2022
0.0.7.8-alpha 176 11/12/2022
0.0.7.4-alpha 201 8/12/2022
0.0.7.2-alpha 210 5/11/2022
0.0.7.1-alpha 186 5/10/2022
0.0.7-alpha 194 5/10/2022
0.0.6-alpha 202 4/27/2022
0.0.4-preview 206 4/7/2022
0.0.3-preview 190 4/7/2022
0.0.2-preview 190 4/2/2022
0.0.1-preview 196 4/1/2022

Added ControlExtensions class with FocusMode attached property.