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

더 자세히 ...

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

Public 멤버 함수

 DreamineBlinkPopupWindow (BlinkPopupOptions opt)

Protected 멤버 함수

override void OnContentRendered (EventArgs e)
override void OnClosing (CancelEventArgs e)
override void OnSourceInitialized (EventArgs e)
override void OnPreviewKeyDown (KeyEventArgs e)
override void OnClosed (EventArgs e)

속성

bool? PopupResult [get]

Private 멤버 함수

IntPtr WndProcHook (IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
void RequestCloseNextTick ()
void StartBlink ()
void StopBlink ()

Private 속성

readonly BlinkPopupOptions _opt
Storyboard? _blinkSb
bool? _requestedResult = null
bool _inClosing = false
PopupAction _lastAction = PopupAction.None
HwndSource? _hwndSrc

정적 Private 속성

const int WM_SYSCOMMAND = 0x0112
const int SC_CLOSE = 0xF060

상세한 설명

점멸 애니메이션, 결과 전달 및 선택적 시스템 닫기 차단을 제공하는 팝업 창입니다.

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

생성자 & 소멸자 문서화

◆ DreamineBlinkPopupWindow()

Dreamine.UI.Wpf.Equipment.Popup.DreamineBlinkPopupWindow.DreamineBlinkPopupWindow ( BlinkPopupOptions opt)
inline

옵션에서 뷰 모델, 창 모드, 크기, 제목 및 최상위 상태를 초기화합니다.

매개변수
opt팝업 표시 및 동작 옵션입니다.
예외
NullReferenceExceptionoptnull일 때 발생합니다.

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

189 {
190 InitializeComponent();
191 _opt = opt;
192
193 // ViewModel 생성 및 닫힘 이벤트 연결
194 var vm = new DreamineBlinkPopupWindowViewModel(opt);
195 vm.CloseRequested += (_, dr) =>
196 {
197 _requestedResult = dr;
198 _lastAction = dr == true
199 ? PopupAction.Ok
200 : dr == false
201 ? PopupAction.Cancel
202 : PopupAction.SystemClose;
203
204 RequestCloseNextTick();
205 };
206 DataContext = vm;
207
208 // TopMost / 기본 타이틀 적용
209 Topmost = _opt.TopMost;
210 if (!string.IsNullOrEmpty(_opt.Title))
211 {
212 Title = _opt.Title;
213 }
214
215 // 윈도우 크기 / 모드 설정
216 if (_opt.Fullscreen)
217 {
218 WindowState = WindowState.Maximized;
219 }
220 else
221 {
222 WindowState = WindowState.Normal;
223
224 if (_opt.FixedSize is Size sz)
225 {
226 Width = sz.Width;
227 Height = sz.Height;
228 }
229 else
230 {
231 SizeToContent = SizeToContent.WidthAndHeight;
232 }
233 }
234 }

다음을 참조함 : _lastAction, _opt, _requestedResult, RequestCloseNextTick().

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

멤버 함수 문서화

◆ OnClosed()

override void Dreamine.UI.Wpf.Equipment.Popup.DreamineBlinkPopupWindow.OnClosed ( EventArgs e)
inlineprotected

창이 닫힌 뒤 점멸 애니메이션과 Win32 후크를 정리합니다.

매개변수
e닫힘 이벤트 데이터입니다.

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

513 {
514 base.OnClosed(e);
515 StopBlink();
516 }

다음을 참조함 : StopBlink().

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

◆ OnClosing()

override void Dreamine.UI.Wpf.Equipment.Popup.DreamineBlinkPopupWindow.OnClosing ( CancelEventArgs e)
inlineprotected

닫기 동작을 기록하고 요청된 대화 결과를 적용하면서 재진입을 방지합니다.

매개변수
e닫기 취소 상태를 포함하는 이벤트 데이터입니다.
예외
ArgumentNullExceptionenull일 때 기본 구현에서 발생할 수 있습니다.

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

286 {
287 if (_lastAction == PopupAction.None)
288 _lastAction = PopupAction.SystemClose;
289
290 if (_inClosing)
291 {
292 base.OnClosing(e);
293 return;
294 }
295 _inClosing = true;
296
297 try
298 {
299 if (_requestedResult.HasValue)
300 {
301 try { DialogResult = _requestedResult; }
302 catch (InvalidOperationException) { }
303 }
304
305 base.OnClosing(e);
306 }
307 finally
308 {
309 _inClosing = false;
310 }
311 }

다음을 참조함 : _inClosing, _lastAction, _requestedResult.

◆ OnContentRendered()

override void Dreamine.UI.Wpf.Equipment.Popup.DreamineBlinkPopupWindow.OnContentRendered ( EventArgs e)
inlineprotected

콘텐츠 렌더링 후 옵션이 활성화되어 있으면 점멸 애니메이션을 시작합니다.

매개변수
e콘텐츠 렌더링 이벤트 데이터입니다.

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

253 {
254 base.OnContentRendered(e);
255 if (_opt.UseBlink)
256 {
257 StartBlink();
258 }
259 }

다음을 참조함 : _opt, StartBlink().

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

◆ OnPreviewKeyDown()

override void Dreamine.UI.Wpf.Equipment.Popup.DreamineBlinkPopupWindow.OnPreviewKeyDown ( KeyEventArgs e)
inlineprotected

옵션이 설정되면 Alt+F4 키 조합을 처리하여 창 닫기를 차단합니다.

매개변수
e미리보기 키 이벤트 데이터입니다.
예외
NullReferenceExceptionenull일 때 발생합니다.

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

361 {
362 if (_opt.BlockAltF4 &&
363 e.SystemKey == Key.F4 &&
364 (Keyboard.Modifiers & ModifierKeys.Alt) == ModifierKeys.Alt)
365 {
366 e.Handled = true;
367 return;
368 }
369
370 base.OnPreviewKeyDown(e);
371 }

다음을 참조함 : _opt.

◆ OnSourceInitialized()

override void Dreamine.UI.Wpf.Equipment.Popup.DreamineBlinkPopupWindow.OnSourceInitialized ( EventArgs e)
inlineprotected

네이티브 창 원본을 확인하고 시스템 명령 메시지 후크를 등록합니다.

매개변수
e원본 초기화 이벤트 데이터입니다.

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

330 {
331 base.OnSourceInitialized(e);
332 _hwndSrc = PresentationSource.FromVisual(this) as HwndSource;
333 _hwndSrc?.AddHook(WndProcHook);
334 }

다음을 참조함 : _hwndSrc, WndProcHook().

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

◆ RequestCloseNextTick()

void Dreamine.UI.Wpf.Equipment.Popup.DreamineBlinkPopupWindow.RequestCloseNextTick ( )
inlineprivate

애플리케이션 유휴 디스패처 틱에서 창 닫기를 시도하고 실패하면 한 번 재시도합니다.

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

456 {
457 if (!IsLoaded)
458 {
459 return;
460 }
461
462 var timer = new DispatcherTimer(DispatcherPriority.ApplicationIdle)
463 {
464 Interval = TimeSpan.FromMilliseconds(1)
465 };
466
467 timer.Tick += (_, __) =>
468 {
469 timer.Stop();
470
471 if (!IsLoaded)
472 {
473 return;
474 }
475
476 try
477 {
478 Close();
479 }
480 catch (Exception ex)
481 {
482 Debug.WriteLine($"[Popup] Close failed, retrying: {ex.Message}");
483 Dispatcher.BeginInvoke(
484 () =>
485 {
486 try { if (IsLoaded) Close(); }
487 catch (Exception retryEx) { Debug.WriteLine($"[Popup] Close retry failed: {retryEx.Message}"); }
488 },
489 DispatcherPriority.ContextIdle);
490 }
491 };
492
493 timer.Start();
494 }

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

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

◆ StartBlink()

void Dreamine.UI.Wpf.Equipment.Popup.DreamineBlinkPopupWindow.StartBlink ( )
inlineprivate

옵션의 색상·불투명도·간격·횟수로 배경 점멸 스토리보드를 만들고 시작합니다.

예외
KeyNotFoundException창 리소스에 RootBrush가 없을 때 발생합니다.
ArgumentOutOfRangeException점멸 간격 또는 반복 횟수가 애니메이션에서 허용되지 않을 때 발생할 수 있습니다.

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

543 {
544 var rootBrushObj = Resources["RootBrush"];
545 SolidColorBrush brush =
546 rootBrushObj is SolidColorBrush scb
547 ? (scb.IsFrozen ? scb.Clone() : scb)
548 : new SolidColorBrush(_opt.Color1);
549
550 Resources["RootBrush"] = brush;
551
552 var colorAnim = new ColorAnimationUsingKeyFrames();
553 colorAnim.KeyFrames.Add(
554 new DiscreteColorKeyFrame(
555 _opt.Color1,
556 KeyTime.FromTimeSpan(TimeSpan.Zero)));
557 colorAnim.KeyFrames.Add(
558 new DiscreteColorKeyFrame(
559 _opt.Color2,
560 KeyTime.FromTimeSpan(TimeSpan.FromMilliseconds(_opt.BlinkIntervalMs))));
561 colorAnim.KeyFrames.Add(
562 new DiscreteColorKeyFrame(
563 _opt.Color1,
564 KeyTime.FromTimeSpan(TimeSpan.FromMilliseconds(_opt.BlinkIntervalMs * 2))));
565
566 Storyboard.SetTarget(colorAnim, brush);
567 Storyboard.SetTargetProperty(colorAnim, new PropertyPath(SolidColorBrush.ColorProperty));
568
569 var opAnim = new DoubleAnimationUsingKeyFrames();
570 opAnim.KeyFrames.Add(
571 new DiscreteDoubleKeyFrame(
572 _opt.Opacity1,
573 KeyTime.FromTimeSpan(TimeSpan.Zero)));
574 opAnim.KeyFrames.Add(
575 new DiscreteDoubleKeyFrame(
576 _opt.Opacity2,
577 KeyTime.FromTimeSpan(TimeSpan.FromMilliseconds(_opt.BlinkIntervalMs))));
578 opAnim.KeyFrames.Add(
579 new DiscreteDoubleKeyFrame(
580 _opt.Opacity1,
581 KeyTime.FromTimeSpan(TimeSpan.FromMilliseconds(_opt.BlinkIntervalMs * 2))));
582
583 Storyboard.SetTarget(opAnim, RootBorder);
584 Storyboard.SetTargetProperty(opAnim, new PropertyPath(OpacityProperty));
585
586 _blinkSb = new Storyboard
587 {
588 RepeatBehavior = _opt.BlinkRepeatCount <= 0
589 ? RepeatBehavior.Forever
590 : new RepeatBehavior(_opt.BlinkRepeatCount)
591 };
592 _blinkSb.Children.Add(colorAnim);
593 _blinkSb.Children.Add(opAnim);
594 _blinkSb.Begin(this, true);
595 }

다음을 참조함 : _blinkSb, _opt.

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

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

◆ StopBlink()

void Dreamine.UI.Wpf.Equipment.Popup.DreamineBlinkPopupWindow.StopBlink ( )
inlineprivate

진행 중인 점멸 스토리보드를 중지하고 Win32 메시지 후크를 제거합니다.

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

606 {
607 _blinkSb?.Stop(this);
608 _blinkSb = null;
609
610 _hwndSrc?.RemoveHook(WndProcHook);
611 _hwndSrc = null;
612 }

다음을 참조함 : _blinkSb, _hwndSrc, WndProcHook().

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

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

◆ WndProcHook()

IntPtr Dreamine.UI.Wpf.Equipment.Popup.DreamineBlinkPopupWindow.WndProcHook ( IntPtr hwnd,
int msg,
IntPtr wParam,
IntPtr lParam,
ref bool handled )
inlineprivate

옵션이 설정된 경우 Win32 창 닫기 시스템 명령을 처리됨으로 표시합니다.

매개변수
hwnd메시지를 받은 창 핸들입니다.
msgWin32 메시지 ID입니다.
wParam메시지 명령 매개변수입니다.
lParam추가 메시지 매개변수입니다.
handled처리 여부 출력값입니다.
반환값
후크 처리 결과로 항상 0입니다.

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

435 {
436 if (_opt.BlockAltF4 &&
437 msg == WM_SYSCOMMAND &&
438 wParam.ToInt32() == SC_CLOSE)
439 {
440 handled = true;
441 return IntPtr.Zero;
442 }
443
444 return IntPtr.Zero;
445 }

다음을 참조함 : _opt, SC_CLOSE, WM_SYSCOMMAND.

다음에 의해서 참조됨 : OnSourceInitialized(), StopBlink().

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

멤버 데이터 문서화

◆ _blinkSb

Storyboard? Dreamine.UI.Wpf.Equipment.Popup.DreamineBlinkPopupWindow._blinkSb
private

배경 색상 및 불투명도 점멸 스토리보드를 보관합니다.

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

다음에 의해서 참조됨 : StartBlink(), StopBlink().

◆ _hwndSrc

HwndSource? Dreamine.UI.Wpf.Equipment.Popup.DreamineBlinkPopupWindow._hwndSrc
private

Win32 시스템 명령 메시지를 후킹할 창 원본을 보관합니다.

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

다음에 의해서 참조됨 : OnSourceInitialized(), StopBlink().

◆ _inClosing

bool Dreamine.UI.Wpf.Equipment.Popup.DreamineBlinkPopupWindow._inClosing = false
private

닫힘 처리 재진입을 방지하는 상태입니다.

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

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

◆ _lastAction

PopupAction Dreamine.UI.Wpf.Equipment.Popup.DreamineBlinkPopupWindow._lastAction = PopupAction.None
private

마지막 닫기 시도 동작을 보관합니다.

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

다음에 의해서 참조됨 : DreamineBlinkPopupWindow(), OnClosing().

◆ _opt

readonly BlinkPopupOptions Dreamine.UI.Wpf.Equipment.Popup.DreamineBlinkPopupWindow._opt
private

창 생성 시 전달된 팝업 옵션을 보관합니다.

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

다음에 의해서 참조됨 : DreamineBlinkPopupWindow(), OnContentRendered(), OnPreviewKeyDown(), StartBlink(), WndProcHook().

◆ _requestedResult

bool? Dreamine.UI.Wpf.Equipment.Popup.DreamineBlinkPopupWindow._requestedResult = null
private

확인, 취소 또는 시스템 닫기로 요청된 결과를 보관합니다.

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

다음에 의해서 참조됨 : DreamineBlinkPopupWindow(), OnClosing().

◆ SC_CLOSE

const int Dreamine.UI.Wpf.Equipment.Popup.DreamineBlinkPopupWindow.SC_CLOSE = 0xF060
staticprivate

Win32 창 닫기 시스템 명령입니다.

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

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

◆ WM_SYSCOMMAND

const int Dreamine.UI.Wpf.Equipment.Popup.DreamineBlinkPopupWindow.WM_SYSCOMMAND = 0x0112
staticprivate

Win32 시스템 명령 메시지 식별자입니다.

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

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

속성 문서화

◆ PopupResult

bool? Dreamine.UI.Wpf.Equipment.Popup.DreamineBlinkPopupWindow.PopupResult
get

비모달 Window.Show로 열린 팝업의 결과를 가져옵니다.

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


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