Dreamine.UI.Wpf.Equipment 1.0.1
Dreamine.UI.Wpf.Equipment 사용자 인터페이스 기능과 구성 요소를 제공합니다.
로딩중...
검색중...
일치하는것 없음
README_KO.md 파일 참조

Dreamine.UI.Wpf.Equipment - 설비급 WPF 컴포넌트: 가상 키보드, 깜빡임 팝업, 알람 구성 더 자세히 ...

상세한 설명

Dreamine.UI.Wpf.Equipment - 설비급 WPF 컴포넌트: 가상 키보드, 깜빡임 팝업, 알람 구성

작성자
Dreamine Core Team
날짜
2026-06-12
버전
1.0.0

Dreamine.UI.Wpf.Equipment

**Dreamine.UI.Wpf.Equipment**는 산업용·설비급 애플리케이션을 위한 WPF 컴포넌트를 제공합니다.

Dreamine.UI.Abstractions에서 정의된 추상화를 구현하며 다음을 제공합니다.

  • 완전한 기능의 화면 가상 키보드
  • 설정 가능한 깜빡임 팝업 창 시스템
  • Dreamine DI 컨테이너에 등록된 팝업 서비스

➡️ English Documentation


이 라이브러리가 해결하는 문제

터치 패널이나 잠금 단말기에서 실행되는 산업용 WPF 애플리케이션에는 다음이 필요합니다.

  • IME를 후킹하지 않고 WPF 텍스트 입력과 통합되는 화면 키보드
  • 운영자의 주의를 끌기 위해 깜빡이는 팝업 창
  • 비즈니스 코드가 창 타입을 직접 참조하지 않도록 하는 팝업 서비스 추상화
  • 다중 모니터 인식 키보드 위치 계산
  • 키보드 닫기 전 유효성 검사를 위한 Enter 키 액션 프로바이더

주요 기능

  • DreamineVirtualKeyboard — 언어 전환 기능이 있는 영숫자 + 숫자 + 소수 키보드
  • DreamineVirtualKeyboardWindow — Win32 모니터 API로 포커스된 입력 요소에 상대적으로 위치하는 플로팅 창
  • DreamineVirtualKeyboardAssist — 코드 없이 XAML로 키보드를 활성화하는 첨부 프로퍼티 헬퍼
  • DreamineBlinkPopupWindowAlt+F4 / SC_CLOSE 차단이 가능한 색상 교대 애니메이션 팝업
  • DreaminePopupServiceIPopupService 구현; 비동기 모달 및 비모달 표시
  • KeyboardLayoutSelectorConverter — 레이아웃에 따라 올바른 키보드 DataTemplate을 선택하는 IValueConverter

요구 사항

  • 대상 프레임워크: net8.0-windows
  • 의존 패키지:
    • Dreamine.UI.Abstractions
    • Dreamine.UI.Wpf
    • Dreamine.UI.Wpf.Controls
    • Dreamine.MVVM.ViewModels
    • SharpHook 5.3.8+

설치

NuGet

dotnet add package Dreamine.UI.Wpf.Equipment

PackageReference

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

프로젝트 구조

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

아키텍처 역할

Dreamine.UI.Abstractions
Dreamine.UI.Wpf.Controls
Dreamine.UI.Wpf
Dreamine.UI.Wpf.Equipment ← 이 패키지
애플리케이션 코드

빠른 시작

가상 키보드 — XAML 첨부 프로퍼티

첨부 프로퍼티를 설정하여 코드 없이 텍스트 입력에 가상 키보드를 활성화합니다.

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 = "알람",
Message = "모터 과부하 감지",
UseBlink = true,
BlinkIntervalMs = 500,
Color1 = Colors.OrangeRed,
Color2 = Colors.DarkRed,
OkText = "확인",
IsModal = true
});

깜빡임 팝업 — Alt+F4 차단

var options = new BlinkPopupOptions
{
Message = "운영자가 반드시 확인해야 합니다",
BlockAltF4 = true,
OkText = "확인"
};

Enter 키 유효성 검사 프로바이더

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>

열거형 참조

열거형 사용처
VkLayout Text, Password, Numeric, Decimal 가상 키보드
LanguageCode en_US, ko_KR, zh_CN, vi_VN 키보드 언어
ActionResult Accepted, Rejected Enter 키 프로바이더
KeyboardInputMode Text, Numeric, Password 입력 라우팅

설계 노트

  • 다중 모니터 위치 계산은 P/Invoke를 통한 Win32 MonitorFromPoint / GetMonitorInfo 사용 — WinForms 의존 없음
  • 가상 키보드 창은 애플리케이션당 싱글톤; DreamineVirtualKeyboardAssist가 표시/숨김 생명주기를 관리
  • DreamineBlinkPopupWindowBlockAltF4 = true일 때 HwndSource를 통한 WM_SYSCOMMAND / SC_CLOSE 인터셉션으로 시스템 닫기를 차단
  • DreaminePopupService는 동기 ShowBlink와 선택적 자동 닫힘 타임아웃 및 CancellationToken을 지원하는 비동기 ShowBlinkAsync 모두 지원

라이선스

MIT License

README_KO.md 파일에서 정의되었습니다.