Dreamine.UI.Wpf.Equipment 1.0.1

dotnet add package Dreamine.UI.Wpf.Equipment --version 1.0.1
                    
NuGet\Install-Package Dreamine.UI.Wpf.Equipment -Version 1.0.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="Dreamine.UI.Wpf.Equipment" Version="1.0.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Dreamine.UI.Wpf.Equipment" Version="1.0.1" />
                    
Directory.Packages.props
<PackageReference Include="Dreamine.UI.Wpf.Equipment" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Dreamine.UI.Wpf.Equipment --version 1.0.1
                    
#r "nuget: Dreamine.UI.Wpf.Equipment, 1.0.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.
#:package Dreamine.UI.Wpf.Equipment@1.0.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Dreamine.UI.Wpf.Equipment&version=1.0.1
                    
Install as a Cake Addin
#tool nuget:?package=Dreamine.UI.Wpf.Equipment&version=1.0.1
                    
Install as a Cake Tool

Dreamine.UI.Wpf.Equipment

Dreamine.UI.Wpf.Equipment provides WPF components designed for industrial and equipment-grade applications.

It implements the abstractions defined in Dreamine.UI.Abstractions and delivers:

  • A fully featured on-screen virtual keyboard
  • A configurable blink popup window system
  • A popup service registered with the Dreamine DI container

➡️ 한국어 문서 보기


What this library solves

Industrial WPF applications running on touch panels or locked-down terminals require:

  • An on-screen keyboard that integrates with WPF text input without hooking IME
  • Popup windows that blink to attract operator attention
  • A popup service abstraction so business code does not reference window types directly
  • Multi-monitor aware keyboard positioning
  • Enter-key action providers for validation before the keyboard dismisses

Key Features

  • DreamineVirtualKeyboard — full alphanumeric + numeric + decimal keyboard with language switching
  • DreamineVirtualKeyboardWindow — floating window that positions itself relative to the focused input element using Win32 monitor API
  • DreamineVirtualKeyboardAssist — attached property helper for zero-code XAML keyboard activation
  • DreamineBlinkPopupWindow — color-alternating animated popup with Alt+F4 / SC_CLOSE blocking
  • DreaminePopupService — implements IPopupService; async modal and non-modal display
  • KeyboardLayoutSelectorConverterIValueConverter that selects the correct keyboard DataTemplate by layout

Requirements

  • Target Framework: net8.0-windows
  • Dependencies:
    • Dreamine.UI.Abstractions
    • Dreamine.UI.Wpf
    • Dreamine.UI.Wpf.Controls
    • Dreamine.MVVM.ViewModels
    • SharpHook 5.3.8+

Installation

NuGet

dotnet add package Dreamine.UI.Wpf.Equipment

PackageReference

<PackageReference Include="Dreamine.UI.Wpf.Equipment" />

Project Structure

Dreamine.UI.Wpf.Equipment
├── Popup/
│   ├── DreamineBlinkPopupWindow.xaml(.cs)
│   ├── DreamineBlinkPopupWindowViewModel.cs
│   └── DreaminePopupService.cs
└── VirtualKeyboard/
    ├── DreamineEnterActionGroupProvider.cs
    ├── DreamineFullKeyboardLayout.xaml(.cs)
    ├── DreamineNumericKeyboardLayout.xaml(.cs)
    ├── DreamineVirtualKeyboard.cs
    ├── DreamineVirtualKeyboardAssist.cs
    ├── DreamineVirtualKeyboardUI.xaml(.cs)
    ├── DreamineVirtualKeyboardWindow.xaml(.cs)
    ├── DreamineVkbIconAdorner.cs
    ├── Key.cs
    ├── KeyboardLayoutSelectorConverter.cs
    └── ShiftWindowOntoScreenHelper.cs

Architecture Role

Dreamine.UI.Abstractions
        │
Dreamine.UI.Wpf.Controls
Dreamine.UI.Wpf
        │
Dreamine.UI.Wpf.Equipment    ← this package
        │
Application Code

Quick Start

Virtual keyboard — XAML attached property

Activate the virtual keyboard for any text input by setting the attached property:

xmlns:vk="clr-namespace:Dreamine.UI.Wpf.Equipment.DreamineVirtualKeyboard;assembly=Dreamine.UI.Wpf.Equipment"

<TextBox vk:DreamineVirtualKeyboardAssist.UseVirtualKeyBoard="True"
         vk:DreamineVirtualKeyboardAssist.Layout="Text" />

<TextBox vk:DreamineVirtualKeyboardAssist.UseVirtualKeyBoard="True"
         vk:DreamineVirtualKeyboardAssist.Layout="Numeric"
         vk:DreamineVirtualKeyboardAssist.Minimum="0"
         vk:DreamineVirtualKeyboardAssist.Maximum="9999" />
var svc = DMContainer.Resolve<IPopupService>();

await svc.ShowBlinkAsync(ownerWindow, new BlinkPopupOptions
{
    Title           = "ALARM",
    Message         = "Motor overload detected",
    UseBlink        = true,
    BlinkIntervalMs = 500,
    Color1          = Colors.OrangeRed,
    Color2          = Colors.DarkRed,
    OkText          = "Acknowledge",
    IsModal         = true
});
var options = new BlinkPopupOptions
{
    Message     = "Operator must acknowledge",
    BlockAltF4  = true,
    OkText      = "OK"
};

Enter-key validation provider

public class RangeCheckProvider : IEnterActionProvider
{
    public DependencyObject? PlacementTarget { get; set; }

    public async Task<ActionResult> ExecuteAsync()
    {
        double val = double.Parse(myTextBox.Text);
        if (val < 0 || val > 100)
            return ActionResult.Rejected;
        return ActionResult.Accepted;
    }
}
<TextBox>
    <vk:DreamineVirtualKeyboardAssist.EnterActionProvider>
        <local:RangeCheckProvider />
    </vk:DreamineVirtualKeyboardAssist.EnterActionProvider>
</TextBox>

Enum Reference

Enum Values Used By
VkLayout Text, Password, Numeric, Decimal Virtual keyboard
LanguageCode en_US, ko_KR, zh_CN, vi_VN Keyboard language
ActionResult Accepted, Rejected Enter-key providers
KeyboardInputMode Text, Numeric, Password Input routing

Design Notes

  • Multi-monitor positioning uses Win32 MonitorFromPoint / GetMonitorInfo via P/Invoke — no WinForms dependency
  • The virtual keyboard window is a singleton per application; DreamineVirtualKeyboardAssist manages its show/hide lifecycle
  • DreamineBlinkPopupWindow uses WM_SYSCOMMAND / SC_CLOSE interception via HwndSource to block system close when BlockAltF4 = true
  • DreaminePopupService supports both synchronous ShowBlink and asynchronous ShowBlinkAsync with optional auto-close timeout and CancellationToken

License

MIT License

Product Compatible and additional computed target framework versions.
.NET net8.0-windows7.0 is compatible.  net9.0-windows was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on Dreamine.UI.Wpf.Equipment:

Package Downloads
Dreamine.UI.FullKit

All-in-one meta package for Dreamine UI libraries (WPF stack). Includes Abstractions, Wpf host, Controls, Equipment, and Themes. Blazor / MAUI / WinForms hosts must be installed separately due to framework differences.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.1 110 7/8/2026
1.0.0 102 7/8/2026