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

더 자세히 ...

Dreamine.UI.Wpf.Equipment.DreamineVirtualKeyboard.DreamineVirtualKeyboardWindow에 대한 상속 다이어그램 :
Dreamine.UI.Wpf.Equipment.DreamineVirtualKeyboard.DreamineVirtualKeyboardWindow에 대한 협력 다이어그램:

클래스

class  NativeMethods

Public 멤버 함수

 DreamineVirtualKeyboardWindow ()
void SetLayout (VkLayout layout)
void SetBinding (System.Windows.Data.Binding binding, decimal min=decimal.MinValue, decimal max=decimal.MaxValue, string decimalFormat="")
void SetPlacementTarget (DependencyObject? placementTarget)

Private 멤버 함수

void DreamineVirtualKeyboardWindow_SizeChanged (object sender, SizeChangedEventArgs e)
void DreamineVirtualKeyboardWindow_LocationChanged (object? sender, EventArgs e)
void DreamineVirtualKeyboardWindow_IsVisibleChanged (object sender, DependencyPropertyChangedEventArgs e)
void DreamineVirtualKeyboardWindow_MouseDown (object sender, MouseButtonEventArgs e)
async void DreamineVirtualKeyboardWindow_KeyUp (object sender, System.Windows.Input.KeyEventArgs e)
async Task HandleKeyUpAsync (System.Windows.Input.KeyEventArgs e)
async Task< bool > InvokeProvdersAsync ()
void DreamineVirtualKeyboardWindow_Closing (object? sender, CancelEventArgs e)
void Application_Exit (object sender, ExitEventArgs e)
void CalcKeyboardPosition ()
void SetDisplayKeyboardSize (VkLayout layout)
void SetDefaultMinMaxValue (VkLayout layout)
void UpdateWindowOwner ()
void OwnerWindow_Closing (object? sender, CancelEventArgs e)
void SetWindowOwner (Window? owner)
void UpdateSourceBinding ()
void UpdateVisibilityState ()
void ClearText ()
void FocusPlacementTarget ()

정적 Private 멤버 함수

static bool TryFindPasswordLikeElement (DependencyObject root, out FrameworkElement element)
static bool HasPasswordProperty (DependencyObject target)
static bool TryWritePassword (DependencyObject target, string value)
static ? FrameworkElement FindDescendantWithPasswordProperty (DependencyObject root)

Private 속성

DependencyObject? _placementTarget

상세한 설명

배치 대상에 맞춰 위치를 조정하고 값 확정·취소·검증을 처리하는 가상 키보드 창입니다.

DreamineVirtualKeyboardWindow.xaml.cs 파일의 23 번째 라인에서 정의되었습니다.

생성자 & 소멸자 문서화

◆ DreamineVirtualKeyboardWindow()

Dreamine.UI.Wpf.Equipment.DreamineVirtualKeyboard.DreamineVirtualKeyboardWindow.DreamineVirtualKeyboardWindow ( )
inline

XAML 구성 요소와 창·입력·애플리케이션 수명 이벤트를 등록합니다.

예외
NullReferenceException현재 WPF 애플리케이션이 없을 때 발생합니다.

DreamineVirtualKeyboardWindow.xaml.cs 파일의 51 번째 라인에서 정의되었습니다.

52 {
53 InitializeComponent();
54 SizeChanged += DreamineVirtualKeyboardWindow_SizeChanged;
55 LocationChanged += DreamineVirtualKeyboardWindow_LocationChanged;
56 IsVisibleChanged += DreamineVirtualKeyboardWindow_IsVisibleChanged;
57 MouseDown += DreamineVirtualKeyboardWindow_MouseDown;
58 KeyUp += DreamineVirtualKeyboardWindow_KeyUp;
59 Closing += DreamineVirtualKeyboardWindow_Closing;
60 System.Windows.Application.Current.Exit += Application_Exit;
61 }

다음을 참조함 : Application_Exit(), DreamineVirtualKeyboardWindow_Closing(), DreamineVirtualKeyboardWindow_IsVisibleChanged(), DreamineVirtualKeyboardWindow_KeyUp(), DreamineVirtualKeyboardWindow_LocationChanged(), DreamineVirtualKeyboardWindow_MouseDown(), DreamineVirtualKeyboardWindow_SizeChanged().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

멤버 함수 문서화

◆ Application_Exit()

void Dreamine.UI.Wpf.Equipment.DreamineVirtualKeyboard.DreamineVirtualKeyboardWindow.Application_Exit ( object sender,
ExitEventArgs e )
inlineprivate

애플리케이션 종료 시 가상 키보드 리소스를 해제합니다.

매개변수
sender애플리케이션입니다.
e종료 이벤트 데이터입니다.

DreamineVirtualKeyboardWindow.xaml.cs 파일의 406 번째 라인에서 정의되었습니다.

407 {
408 VirtualKeyboardComp?.Dispose();
409 }

다음에 의해서 참조됨 : DreamineVirtualKeyboardWindow().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ CalcKeyboardPosition()

void Dreamine.UI.Wpf.Equipment.DreamineVirtualKeyboard.DreamineVirtualKeyboardWindow.CalcKeyboardPosition ( )
inlineprivate

배치 대상과 모니터 작업 영역을 기준으로 키보드 창 위치를 계산하고 화면 안으로 보정합니다.

예외
InvalidOperationException배치 대상이 PresentationSource에 연결되지 않은 경우 화면 좌표 변환에서 발생할 수 있습니다.

DreamineVirtualKeyboardWindow.xaml.cs 파일의 428 번째 라인에서 정의되었습니다.

429 {
430 if (_placementTarget is not UIElement ui)
431 return;
432
433 Point ptDev = ui.PointToScreen(new Point(0, 0));
434
435 var ps = PresentationSource.FromVisual(ui);
436 Matrix fromDevice = ps?.CompositionTarget?.TransformFromDevice ?? Matrix.Identity;
437
438 Point ptDip = fromDevice.Transform(ptDev);
439
440 var hMonitor = NativeMethods.MonitorFromPoint(new NativeMethods.POINT { x = (int)ptDev.X, y = (int)ptDev.Y }, NativeMethods.MONITOR_DEFAULTTONEAREST);
441 var mi = new NativeMethods.MONITORINFO { cbSize = (uint)Marshal.SizeOf<NativeMethods.MONITORINFO>() };
442 NativeMethods.GetMonitorInfo(hMonitor, ref mi);
443 var waR = mi.rcWork;
444 Point waTopLeftDip = fromDevice.Transform(new Point(waR.left, waR.top));
445 Point waBottomRightDip = fromDevice.Transform(new Point(waR.right, waR.bottom));
446 var waDip = new Rect(waTopLeftDip, waBottomRightDip);
447
448 double windowHeight = ActualHeight;
449 double windowWidth = ActualWidth;
450 if (windowHeight <= 0 || windowWidth <= 0) return;
451
452 double desiredTop;
453 if (ptDip.Y + ui.RenderSize.Height + windowHeight > waDip.Bottom)
454 {
455 desiredTop = Math.Max(ptDip.Y - windowHeight, waDip.Top);
456 }
457 else
458 {
459 desiredTop = ptDip.Y + ui.RenderSize.Height;
460 }
461
462 double desiredLeft = Math.Min(Math.Max(ptDip.X, waDip.Left), waDip.Right - windowWidth);
463
464 Left = desiredLeft;
465 Top = desiredTop;
466
467 ShiftWindowOntoScreenHelper.ShiftWindowOntoScreen(this, waDip);
468 }

다음을 참조함 : _placementTarget, Dreamine.UI.Wpf.Equipment.DreamineVirtualKeyboard.DreamineVirtualKeyboardWindow.NativeMethods.GetMonitorInfo(), Dreamine.UI.Wpf.Equipment.DreamineVirtualKeyboard.DreamineVirtualKeyboardWindow.NativeMethods.MONITOR_DEFAULTTONEAREST, Dreamine.UI.Wpf.Equipment.DreamineVirtualKeyboard.DreamineVirtualKeyboardWindow.NativeMethods.MonitorFromPoint(), Dreamine.UI.Wpf.Equipment.DreamineVirtualKeyboard.ShiftWindowOntoScreenHelper.ShiftWindowOntoScreen().

다음에 의해서 참조됨 : DreamineVirtualKeyboardWindow_IsVisibleChanged(), DreamineVirtualKeyboardWindow_SizeChanged(), SetPlacementTarget().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ ClearText()

void Dreamine.UI.Wpf.Equipment.DreamineVirtualKeyboard.DreamineVirtualKeyboardWindow.ClearText ( )
inlineprivate

암호 입력과 검증 메시지 텍스트를 비웁니다.

DreamineVirtualKeyboardWindow.xaml.cs 파일의 1001 번째 라인에서 정의되었습니다.

1002 {
1003 VirtualKeyboardComp.VkbPasswordBox.Password = string.Empty;
1004 VirtualKeyboardComp.MsgTbl.Text = string.Empty;
1005 }

다음에 의해서 참조됨 : DreamineVirtualKeyboardWindow_IsVisibleChanged(), HandleKeyUpAsync().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ DreamineVirtualKeyboardWindow_Closing()

void Dreamine.UI.Wpf.Equipment.DreamineVirtualKeyboard.DreamineVirtualKeyboardWindow.DreamineVirtualKeyboardWindow_Closing ( object? sender,
CancelEventArgs e )
inlineprivate

창 닫기 시 아이콘, 키보드 리소스 및 공유 창 상태를 정리합니다.

매개변수
sender창입니다.
e닫기 이벤트 데이터입니다.

DreamineVirtualKeyboardWindow.xaml.cs 파일의 375 번째 라인에서 정의되었습니다.

376 {
377 DreamineVirtualKeyboardAssist.SetVkbIconVisibility(_placementTarget, false);
378 VirtualKeyboardComp?.Dispose();
379 DreamineVirtualKeyboardAssist.ResetDreamineVirtualKeyboard();
380 }

다음을 참조함 : _placementTarget, Dreamine.UI.Wpf.Equipment.DreamineVirtualKeyboard.DreamineVirtualKeyboardAssist.ResetDreamineVirtualKeyboard(), Dreamine.UI.Wpf.Equipment.DreamineVirtualKeyboard.DreamineVirtualKeyboardAssist.SetVkbIconVisibility().

다음에 의해서 참조됨 : DreamineVirtualKeyboardWindow().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ DreamineVirtualKeyboardWindow_IsVisibleChanged()

void Dreamine.UI.Wpf.Equipment.DreamineVirtualKeyboard.DreamineVirtualKeyboardWindow.DreamineVirtualKeyboardWindow_IsVisibleChanged ( object sender,
DependencyPropertyChangedEventArgs e )
inlineprivate

창 표시 상태에 따라 입력 핸들러·바인딩·배치 대상을 정리하거나 위치를 갱신합니다.

매개변수
sender창입니다.
e새 표시 상태입니다.
예외
InvalidCastException새 값이 bool이 아닐 때 발생합니다.

DreamineVirtualKeyboardWindow.xaml.cs 파일의 153 번째 라인에서 정의되었습니다.

154 {
155 var isVisible = (bool)e.NewValue;
156 if (!isVisible)
157 {
158 DreamineVirtualKeyboardAssist.SetVkbIconVisibility(_placementTarget, false);
159 VirtualKeyboardComp.ReleasePressedKeys();
160 VirtualKeyboardComp.RemoveNumericHandler();
161 BindingOperations.ClearBinding(VirtualKeyboardComp, DreamineVirtualKeyboardUI.ValueProperty);
162 ClearText();
163 SetPlacementTarget(null);
164 }
165 else
166 {
167 if (IsLoaded)
168 {
169 CalcKeyboardPosition();
170 }
171 }
172 }

다음을 참조함 : _placementTarget, CalcKeyboardPosition(), ClearText(), SetPlacementTarget(), Dreamine.UI.Wpf.Equipment.DreamineVirtualKeyboard.DreamineVirtualKeyboardAssist.SetVkbIconVisibility(), Dreamine.UI.Wpf.Equipment.DreamineVirtualKeyboard.DreamineVirtualKeyboardUI.ValueProperty.

다음에 의해서 참조됨 : DreamineVirtualKeyboardWindow().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ DreamineVirtualKeyboardWindow_KeyUp()

async void Dreamine.UI.Wpf.Equipment.DreamineVirtualKeyboard.DreamineVirtualKeyboardWindow.DreamineVirtualKeyboardWindow_KeyUp ( object sender,
System.Windows.Input.KeyEventArgs e )
inlineprivate

키 놓기 동작을 비동기로 처리하고 예외를 진단 출력에 기록합니다.

매개변수
sender입력 이벤트 발신자입니다.
e키 이벤트 데이터입니다.

async void WPF 이벤트 처리기입니다.

DreamineVirtualKeyboardWindow.xaml.cs 파일의 244 번째 라인에서 정의되었습니다.

245 {
246 try { await HandleKeyUpAsync(e); }
247 catch (Exception ex) { Debug.WriteLine($"[VK] KeyUp error: {ex.Message}"); }
248 }

다음을 참조함 : HandleKeyUpAsync().

다음에 의해서 참조됨 : DreamineVirtualKeyboardWindow().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ DreamineVirtualKeyboardWindow_LocationChanged()

void Dreamine.UI.Wpf.Equipment.DreamineVirtualKeyboard.DreamineVirtualKeyboardWindow.DreamineVirtualKeyboardWindow_LocationChanged ( object? sender,
EventArgs e )
inlineprivate

창 위치 변경 후 텍스트 입력 포커스를 복원합니다.

매개변수
sender창입니다.
e위치 변경 데이터입니다.

DreamineVirtualKeyboardWindow.xaml.cs 파일의 116 번째 라인에서 정의되었습니다.

117 {
118 VirtualKeyboardComp.FocusVkbTextBox();
119 }

다음에 의해서 참조됨 : DreamineVirtualKeyboardWindow().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ DreamineVirtualKeyboardWindow_MouseDown()

void Dreamine.UI.Wpf.Equipment.DreamineVirtualKeyboard.DreamineVirtualKeyboardWindow.DreamineVirtualKeyboardWindow_MouseDown ( object sender,
MouseButtonEventArgs e )
inlineprivate

왼쪽 마우스 버튼을 누르면 창 끌기를 시작합니다.

매개변수
sender창입니다.
e마우스 입력 데이터입니다.
예외
InvalidOperationException왼쪽 버튼이 눌리지 않은 상태로 끌기를 시작할 때 WPF에서 발생할 수 있습니다.

DreamineVirtualKeyboardWindow.xaml.cs 파일의 206 번째 라인에서 정의되었습니다.

207 {
208 if (Mouse.LeftButton == MouseButtonState.Pressed)
209 this.DragMove();
210 }

다음에 의해서 참조됨 : DreamineVirtualKeyboardWindow().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ DreamineVirtualKeyboardWindow_SizeChanged()

void Dreamine.UI.Wpf.Equipment.DreamineVirtualKeyboard.DreamineVirtualKeyboardWindow.DreamineVirtualKeyboardWindow_SizeChanged ( object sender,
SizeChangedEventArgs e )
inlineprivate

창 크기 변경 시 배치 대상 기준 위치를 다시 계산합니다.

매개변수
sender창입니다.
e크기 변경 데이터입니다.

DreamineVirtualKeyboardWindow.xaml.cs 파일의 87 번째 라인에서 정의되었습니다.

88 {
89 CalcKeyboardPosition();
90 }

다음을 참조함 : CalcKeyboardPosition().

다음에 의해서 참조됨 : DreamineVirtualKeyboardWindow().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ FindDescendantWithPasswordProperty()

? FrameworkElement Dreamine.UI.Wpf.Equipment.DreamineVirtualKeyboard.DreamineVirtualKeyboardWindow.FindDescendantWithPasswordProperty ( DependencyObject root)
inlinestaticprivate

시각적 후손에서 쓰기 가능한 문자열 Password 속성을 가진 첫 요소를 찾습니다.

매개변수
root탐색 시작 객체입니다.
반환값
첫 일치 요소이며 없으면 null입니다.
예외
InvalidOperationException루트가 유효한 시각적 객체가 아닐 때 발생할 수 있습니다.

DreamineVirtualKeyboardWindow.xaml.cs 파일의 963 번째 라인에서 정의되었습니다.

964 {
965 int count = VisualTreeHelper.GetChildrenCount(root);
966 for (int i = 0; i < count; i++)
967 {
968 var child = VisualTreeHelper.GetChild(root, i);
969
970 if (child is FrameworkElement fe && HasPasswordProperty(child))
971 return fe;
972
973 var deeper = FindDescendantWithPasswordProperty(child);
974 if (deeper != null)
975 return deeper;
976 }
977 return null;
978 }

다음을 참조함 : FindDescendantWithPasswordProperty(), HasPasswordProperty().

다음에 의해서 참조됨 : FindDescendantWithPasswordProperty(), TryFindPasswordLikeElement().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ FocusPlacementTarget()

void Dreamine.UI.Wpf.Equipment.DreamineVirtualKeyboard.DreamineVirtualKeyboardWindow.FocusPlacementTarget ( )
inlineprivate

배치 대상의 텍스트 입력 또는 대상 자체로 포커스를 복원합니다.

DreamineVirtualKeyboardWindow.xaml.cs 파일의 1015 번째 라인에서 정의되었습니다.

1016 {
1017 if (_placementTarget?.FindFirstVisualChild<System.Windows.Controls.TextBox>() is { } textBox)
1018 {
1019 textBox.Focus();
1020 textBox.CaretIndex = textBox.Text.Length;
1021 }
1022 else if (_placementTarget is UIElement passwordBox)
1023 {
1024 passwordBox.Focus();
1025 }
1026 }

다음을 참조함 : _placementTarget.

다음에 의해서 참조됨 : HandleKeyUpAsync().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ HandleKeyUpAsync()

async Task Dreamine.UI.Wpf.Equipment.DreamineVirtualKeyboard.DreamineVirtualKeyboardWindow.HandleKeyUpAsync ( System.Windows.Input.KeyEventArgs e)
inlineprivate

Enter 키는 값과 공급자 동작을 확정하고 Escape 키는 취소한 뒤 창을 숨깁니다.

매개변수
e처리할 키 이벤트입니다.
반환값
비동기 처리 작업입니다.
예외
NullReferenceExceptionenull일 때 발생합니다.

DreamineVirtualKeyboardWindow.xaml.cs 파일의 282 번째 라인에서 정의되었습니다.

283 {
284 switch (e.Key)
285 {
286 case System.Windows.Input.Key.Enter:
287 UpdateSourceBinding();
288
289 var result = await InvokeProvdersAsync();
290 if (!result)
291 {
292 return;
293 }
294
295 FocusPlacementTarget();
296 ClearText();
297 await Task.Delay(100);
298 if (IsVisible) Hide();
299 break;
300 case System.Windows.Input.Key.Escape:
301 FocusPlacementTarget();
302 ClearText();
303 await Task.Delay(100);
304 if (IsVisible) Hide();
305 break;
306 default:
307 break;
308 }
309 }

다음을 참조함 : ClearText(), FocusPlacementTarget(), InvokeProvdersAsync(), UpdateSourceBinding().

다음에 의해서 참조됨 : DreamineVirtualKeyboardWindow_KeyUp().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ HasPasswordProperty()

bool Dreamine.UI.Wpf.Equipment.DreamineVirtualKeyboard.DreamineVirtualKeyboardWindow.HasPasswordProperty ( DependencyObject target)
inlinestaticprivate

대상 형식에 읽고 쓸 수 있는 문자열 Password CLR 속성이 있는지 확인합니다.

매개변수
target검사할 객체입니다.
반환값
호환 속성이 있으면 true입니다.
예외
NullReferenceExceptiontargetnull일 때 발생합니다.

DreamineVirtualKeyboardWindow.xaml.cs 파일의 865 번째 라인에서 정의되었습니다.

866 {
867 var t = target.GetType();
868 var p = t.GetProperty(
869 "Password",
870 BindingFlags.Public | BindingFlags.Instance | BindingFlags.FlattenHierarchy
871 );
872 return p != null && p.CanRead && p.CanWrite && p.PropertyType == typeof(string);
873 }

다음에 의해서 참조됨 : FindDescendantWithPasswordProperty(), TryFindPasswordLikeElement().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ InvokeProvdersAsync()

async Task< bool > Dreamine.UI.Wpf.Equipment.DreamineVirtualKeyboard.DreamineVirtualKeyboardWindow.InvokeProvdersAsync ( )
inlineprivate

배치 대상에 등록된 Enter 동작 공급자를 순서대로 실행하고 첫 거부에서 중단합니다.

반환값
모든 공급자가 승인하면 true입니다.

DreamineVirtualKeyboardWindow.xaml.cs 파일의 327 번째 라인에서 정의되었습니다.

328 {
329 if (_placementTarget != null)
330 {
331 var providers = DreamineVirtualKeyboardAssist.GetEnterActionProviders(_placementTarget);
332 foreach (var provider in providers)
333 {
334 var result = await provider.ExecuteAsync();
335 result.Show(VirtualKeyboardComp.MsgTbl);
336 if (!result.IsAccepted())
337 {
338 if (provider.PlacementTarget != null && DreamineVirtualKeyboardAssist.TargetChanged(provider.PlacementTarget))
339 {
340 DreamineVirtualKeyboardAssist.ShowDreamineVirtualKeyboard(provider.PlacementTarget);
341 }
342
343 return false;
344 }
345 }
346 }
347
348 return true;
349 }

다음을 참조함 : _placementTarget, Dreamine.UI.Wpf.Equipment.DreamineVirtualKeyboard.DreamineVirtualKeyboardAssist.GetEnterActionProviders(), Dreamine.UI.Wpf.Equipment.DreamineVirtualKeyboard.DreamineVirtualKeyboardAssist.ShowDreamineVirtualKeyboard(), Dreamine.UI.Wpf.Equipment.DreamineVirtualKeyboard.DreamineVirtualKeyboardAssist.TargetChanged().

다음에 의해서 참조됨 : HandleKeyUpAsync().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ OwnerWindow_Closing()

void Dreamine.UI.Wpf.Equipment.DreamineVirtualKeyboard.DreamineVirtualKeyboardWindow.OwnerWindow_Closing ( object? sender,
CancelEventArgs e )
inlineprivate

소유 창이 닫힐 때 소유 관계를 제거하고 표시 중인 키보드를 숨깁니다.

매개변수
sender닫히는 소유 창입니다.
e닫기 이벤트 데이터입니다.

DreamineVirtualKeyboardWindow.xaml.cs 파일의 704 번째 라인에서 정의되었습니다.

705 {
706 if (IsVisible)
707 {
708 SetWindowOwner(null);
709 Hide();
710 }
711 }

다음을 참조함 : SetWindowOwner().

다음에 의해서 참조됨 : UpdateWindowOwner().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ SetBinding()

void Dreamine.UI.Wpf.Equipment.DreamineVirtualKeyboard.DreamineVirtualKeyboardWindow.SetBinding ( System.Windows.Data.Binding binding,
decimal min = decimal::MinValue,
decimal max = decimal::MaxValue,
string decimalFormat = "" )
inline

배치 대상 값을 키보드에 바인딩하고 숫자 범위와 소수 표시 형식을 구성합니다.

매개변수
binding값에 적용할 WPF 바인딩입니다.
min최소 숫자 값입니다.
max최대 숫자 값입니다.
decimalFormat선택적 소수 형식 문자열입니다.

DreamineVirtualKeyboardWindow.xaml.cs 파일의 589 번째 라인에서 정의되었습니다.

590 {
591 if (binding == null) return;
592 if (_placementTarget is PasswordBox passwordBox)
593 {
594 VirtualKeyboardComp.VkbPasswordBox.Password = passwordBox.Password;
595 }
596 else
597 {
598 BindingOperations.SetBinding(VirtualKeyboardComp, DreamineVirtualKeyboardUI.ValueProperty, binding);
599 VirtualKeyboardComp.Minimum = min;
600 VirtualKeyboardComp.Maximum = max;
601 VirtualKeyboardComp.DecimalFormat = decimalFormat;
602 }
603
604 UpdateVisibilityState();
605 VirtualKeyboardComp.AddOrRemoveNumericHandler();
606 }

다음을 참조함 : _placementTarget, UpdateVisibilityState(), Dreamine.UI.Wpf.Equipment.DreamineVirtualKeyboard.DreamineVirtualKeyboardUI.ValueProperty.

다음에 의해서 참조됨 : Dreamine.UI.Wpf.Equipment.DreamineVirtualKeyboard.DreamineVirtualKeyboardAssist.SetBinding().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ SetDefaultMinMaxValue()

void Dreamine.UI.Wpf.Equipment.DreamineVirtualKeyboard.DreamineVirtualKeyboardWindow.SetDefaultMinMaxValue ( VkLayout layout)
inlineprivate

소수 또는 정수 레이아웃에 맞는 기본 최소·최대값을 설정합니다.

매개변수
layout기준 레이아웃입니다.

DreamineVirtualKeyboardWindow.xaml.cs 파일의 535 번째 라인에서 정의되었습니다.

536 {
537 if (layout == VkLayout.Decimal)
538 {
539 VirtualKeyboardComp.Minimum = decimal.MinValue;
540 VirtualKeyboardComp.Maximum = decimal.MaxValue;
541 }
542 else
543 {
544 VirtualKeyboardComp.Minimum = int.MinValue;
545 VirtualKeyboardComp.Maximum = int.MaxValue;
546 }
547 }

다음에 의해서 참조됨 : SetLayout().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ SetDisplayKeyboardSize()

void Dreamine.UI.Wpf.Equipment.DreamineVirtualKeyboard.DreamineVirtualKeyboardWindow.SetDisplayKeyboardSize ( VkLayout layout)
inlineprivate

텍스트 계열과 숫자 계열 레이아웃에 맞는 최대 창 너비를 설정합니다.

매개변수
layout기준 레이아웃입니다.

DreamineVirtualKeyboardWindow.xaml.cs 파일의 514 번째 라인에서 정의되었습니다.

515 {
516 MaxWidth = layout == VkLayout.Text || layout == VkLayout.Password ? 948 : 548;
517 }

다음에 의해서 참조됨 : SetLayout().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ SetLayout()

void Dreamine.UI.Wpf.Equipment.DreamineVirtualKeyboard.DreamineVirtualKeyboardWindow.SetLayout ( VkLayout layout)
inline

키보드 레이아웃을 설정하고 창 크기, 기본 범위 및 표시 상태를 갱신합니다.

매개변수
layout적용할 키보드 레이아웃입니다.

DreamineVirtualKeyboardWindow.xaml.cs 파일의 487 번째 라인에서 정의되었습니다.

488 {
489 VirtualKeyboardComp.Layout = layout;
490
491 SetDisplayKeyboardSize(layout);
492
493 SetDefaultMinMaxValue(layout);
494
495 UpdateVisibilityState();
496 }

다음을 참조함 : SetDefaultMinMaxValue(), SetDisplayKeyboardSize(), UpdateVisibilityState().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ SetPlacementTarget()

void Dreamine.UI.Wpf.Equipment.DreamineVirtualKeyboard.DreamineVirtualKeyboardWindow.SetPlacementTarget ( DependencyObject? placementTarget)
inline

현재 배치 대상을 설정하고 암호·일반 입력 UI, 창 위치 및 소유 창을 갱신합니다.

매개변수
placementTarget편집할 대상이며 정리 시 null입니다.

DreamineVirtualKeyboardWindow.xaml.cs 파일의 624 번째 라인에서 정의되었습니다.

625 {
626 DreamineVirtualKeyboardAssist.SetVkbIconVisibility(_placementTarget, false);
627
628 _placementTarget = placementTarget;
629
630 if (_placementTarget is PasswordBox passwordBox)
631 {
632 VirtualKeyboardComp.VkbPasswordBox.Visibility = Visibility.Visible;
633 VirtualKeyboardComp.VkbTextBox.Visibility = Visibility.Collapsed;
634 }
635 else
636 {
637 VirtualKeyboardComp.VkbPasswordBox.Visibility = Visibility.Collapsed;
638 VirtualKeyboardComp.VkbTextBox.Visibility = Visibility.Visible;
639 }
640
641 if (IsLoaded)
642 {
643 CalcKeyboardPosition();
644 }
645
646 UpdateWindowOwner();
647 }

다음을 참조함 : _placementTarget, CalcKeyboardPosition(), Dreamine.UI.Wpf.Equipment.DreamineVirtualKeyboard.DreamineVirtualKeyboardAssist.SetVkbIconVisibility(), UpdateWindowOwner().

다음에 의해서 참조됨 : DreamineVirtualKeyboardWindow_IsVisibleChanged().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ SetWindowOwner()

void Dreamine.UI.Wpf.Equipment.DreamineVirtualKeyboard.DreamineVirtualKeyboardWindow.SetWindowOwner ( Window? owner)
inlineprivate

가상 키보드 창의 WPF 소유 창을 설정합니다.

매개변수
owner새 소유 창이며 관계 제거 시 null입니다.
예외
InvalidOperationException잘못된 소유 관계를 설정할 때 WPF에서 발생할 수 있습니다.

DreamineVirtualKeyboardWindow.xaml.cs 파일의 737 번째 라인에서 정의되었습니다.

738 {
739 Owner = owner;
740 }

다음에 의해서 참조됨 : OwnerWindow_Closing(), UpdateWindowOwner().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ TryFindPasswordLikeElement()

bool Dreamine.UI.Wpf.Equipment.DreamineVirtualKeyboard.DreamineVirtualKeyboardWindow.TryFindPasswordLikeElement ( DependencyObject root,
out FrameworkElement element )
inlinestaticprivate

루트 또는 시각적 후손에서 쓰기 가능한 문자열 Password 속성을 가진 요소를 찾습니다.

매개변수
root탐색 시작 객체입니다.
element성공 시 찾은 요소입니다.
반환값
암호 입력 요소를 찾았으면 true입니다.

DreamineVirtualKeyboardWindow.xaml.cs 파일의 805 번째 라인에서 정의되었습니다.

806 {
807 element = null!;
808
809 // A) 표준 PasswordBox 우선
810 if (root.FindFirstVisualChild<PasswordBox>() is { } pwdBox)
811 {
812 element = pwdBox;
813 return true;
814 }
815
816 // B) 루트 자체가 Password CLR 속성 보유면 사용
817 if (root is FrameworkElement feRoot && HasPasswordProperty(root))
818 {
819 element = feRoot;
820 return true;
821 }
822
823 // C) 하위에서 Password CLR 속성 보유 요소 탐색
824 if (FindDescendantWithPasswordProperty(root) is FrameworkElement fe)
825 {
826 element = fe;
827 return true;
828 }
829
830 return false;
831 }

다음을 참조함 : FindDescendantWithPasswordProperty(), HasPasswordProperty().

다음에 의해서 참조됨 : UpdateSourceBinding().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ TryWritePassword()

bool Dreamine.UI.Wpf.Equipment.DreamineVirtualKeyboard.DreamineVirtualKeyboardWindow.TryWritePassword ( DependencyObject target,
string value )
inlinestaticprivate

리플렉션으로 대상의 쓰기 가능한 문자열 Password 속성에 값을 설정합니다.

매개변수
target암호 값을 받을 객체입니다.
value설정할 암호 문자열입니다.
반환값
호환 속성을 찾아 설정했으면 true입니다.
예외
System.Reflection.TargetInvocationExceptionPassword 속성 setter가 예외를 발생시키면 발생합니다.

DreamineVirtualKeyboardWindow.xaml.cs 파일의 915 번째 라인에서 정의되었습니다.

916 {
917 var t = target.GetType();
918 var p = t.GetProperty(
919 "Password",
920 BindingFlags.Public | BindingFlags.Instance | BindingFlags.FlattenHierarchy
921 );
922
923 if (p != null && p.CanWrite && p.PropertyType == typeof(string))
924 {
925 p.SetValue(target, value);
926 return true;
927 }
928 return false;
929 }

다음에 의해서 참조됨 : UpdateSourceBinding().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ UpdateSourceBinding()

void Dreamine.UI.Wpf.Equipment.DreamineVirtualKeyboard.DreamineVirtualKeyboardWindow.UpdateSourceBinding ( )
inlineprivate

암호 입력은 대상의 Password 속성에 쓰고 일반 입력은 텍스트 바인딩 소스를 갱신합니다.

DreamineVirtualKeyboardWindow.xaml.cs 파일의 750 번째 라인에서 정의되었습니다.

751 {
752
753 if (VirtualKeyboardComp.VkbPasswordBox.Password != string.Empty)
754 {
755 if (TryFindPasswordLikeElement(_placementTarget!, out var sink))
756 {
757 if (sink is PasswordBox childPwd)
758 {
759 childPwd.Password = VirtualKeyboardComp.VkbPasswordBox.Password;
760 return;
761 }
762
763 if (TryWritePassword(sink, VirtualKeyboardComp.VkbPasswordBox.Password))
764 return;
765 }
766 }
767 else
768 {
769 VirtualKeyboardComp.UpdateSourceBinding();
770 }
771 }

다음을 참조함 : _placementTarget, TryFindPasswordLikeElement(), TryWritePassword().

다음에 의해서 참조됨 : HandleKeyUpAsync().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ UpdateVisibilityState()

void Dreamine.UI.Wpf.Equipment.DreamineVirtualKeyboard.DreamineVirtualKeyboardWindow.UpdateVisibilityState ( )
inlineprivate

키보드 UI의 숫자 제한 레이블 표시 상태를 갱신합니다.

DreamineVirtualKeyboardWindow.xaml.cs 파일의 988 번째 라인에서 정의되었습니다.

989 {
990 VirtualKeyboardComp.UpdateNumericLabelVisibility();
991 }

다음에 의해서 참조됨 : SetBinding(), SetLayout().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ UpdateWindowOwner()

void Dreamine.UI.Wpf.Equipment.DreamineVirtualKeyboard.DreamineVirtualKeyboardWindow.UpdateWindowOwner ( )
inlineprivate

배치 대상이 속한 창을 가상 키보드의 소유 창으로 설정합니다.

예외
NullReferenceException대상이 창에 연결되어 있지 않아 Window.GetWindow(DependencyObject)가 null을 반환할 때 발생할 수 있습니다.

DreamineVirtualKeyboardWindow.xaml.cs 파일의 665 번째 라인에서 정의되었습니다.

666 {
667 if (_placementTarget != null)
668 {
669 var ownerWindow = Window.GetWindow(_placementTarget);
670 ownerWindow.Closing -= OwnerWindow_Closing;
671 ownerWindow.Closing += OwnerWindow_Closing;
672 SetWindowOwner(ownerWindow);
673 }
674 else
675 {
676 SetWindowOwner(null);
677 }
678 }

다음을 참조함 : _placementTarget, OwnerWindow_Closing(), SetWindowOwner().

다음에 의해서 참조됨 : SetPlacementTarget().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

멤버 데이터 문서화

◆ _placementTarget

DependencyObject? Dreamine.UI.Wpf.Equipment.DreamineVirtualKeyboard.DreamineVirtualKeyboardWindow._placementTarget
private

키보드가 현재 편집하는 배치 대상 요소를 보관합니다.

DreamineVirtualKeyboardWindow.xaml.cs 파일의 33 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : CalcKeyboardPosition(), DreamineVirtualKeyboardWindow_Closing(), DreamineVirtualKeyboardWindow_IsVisibleChanged(), FocusPlacementTarget(), InvokeProvdersAsync(), SetBinding(), SetPlacementTarget(), UpdateSourceBinding(), UpdateWindowOwner().


이 클래스에 대한 문서화 페이지는 다음의 파일로부터 생성되었습니다.: