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

더 자세히 ...

정적 Public 멤버 함수

static void SetIsEnabled (DependencyObject d, bool value)
static bool GetIsEnabled (DependencyObject d)
static void SetMin (DependencyObject d, double? value)
static ? double GetMin (DependencyObject d)
static void SetMax (DependencyObject d, double? value)
static ? double GetMax (DependencyObject d)
static void SetMode (DependencyObject d, NumericRangeMode value)
static NumericRangeMode GetMode (DependencyObject d)

정적 Public 속성

static readonly DependencyProperty IsEnabledProperty
static readonly DependencyProperty MinProperty
static readonly DependencyProperty MaxProperty
static readonly DependencyProperty ModeProperty

정적 Private 멤버 함수

static void SetLastValidText (DependencyObject d, string value)
static string GetLastValidText (DependencyObject d)
static void OnIsEnabledChanged (DependencyObject d, DependencyPropertyChangedEventArgs e)
static void Tb_Loaded (object sender, RoutedEventArgs e)
static void OnPasting (object sender, DataObjectPastingEventArgs e)
static void Tb_TextChanged (object sender, TextChangedEventArgs e)
static void Tb_LostFocus (object sender, RoutedEventArgs e)
static string GetFutureText (TextBox tb, string insert)
static bool TryValidate (TextBox tb, string text, out string corrected)

정적 Private 속성

static readonly DependencyProperty LastValidTextProperty

상세한 설명

TextBox에 숫자 최소값과 최대값을 강제하는 연결 동작을 제공합니다.

ViewModel이나 모델을 수정하지 않고 입력 단계에서 값을 보정하거나 거부합니다.

NumericRangeBehavior.cs 파일의 55 번째 라인에서 정의되었습니다.

멤버 함수 문서화

◆ GetFutureText()

string Dreamine.UI.Wpf.Behaviors.NumericRangeBehavior.GetFutureText ( TextBox tb,
string insert )
inlinestaticprivate

현재 선택 영역을 대체하여 문자열을 삽입했을 때 만들어질 텍스트를 계산합니다.

매개변수
tb현재 텍스트와 선택 영역을 제공하는 텍스트 상자입니다.
insert삽입할 문자열입니다.
반환값
삽입 이후의 예상 텍스트입니다.
예외
ArgumentOutOfRangeException텍스트 상자의 선택 위치가 현재 문자열 범위를 벗어나면 발생할 수 있습니다.

NumericRangeBehavior.cs 파일의 643 번째 라인에서 정의되었습니다.

644 {
645 var text = tb.Text ?? string.Empty;
646 var selStart = tb.SelectionStart;
647 var selLen = tb.SelectionLength;
648 if (selLen > 0) text = text.Remove(selStart, selLen);
649 return text.Insert(selStart, insert);
650 }

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

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

◆ GetIsEnabled()

bool Dreamine.UI.Wpf.Behaviors.NumericRangeBehavior.GetIsEnabled ( DependencyObject d)
inlinestatic

대상 개체의 숫자 범위 동작 활성화 여부를 가져옵니다.

매개변수
d값을 읽을 종속성 개체입니다.
반환값
활성화되어 있으면 true입니다.

NumericRangeBehavior.cs 파일의 181 번째 라인에서 정의되었습니다.

181=> (bool)d.GetValue(IsEnabledProperty);

다음을 참조함 : IsEnabledProperty.

◆ GetLastValidText()

string Dreamine.UI.Wpf.Behaviors.NumericRangeBehavior.GetLastValidText ( DependencyObject d)
inlinestaticprivate

대상 개체에 저장된 마지막 유효 텍스트를 가져옵니다.

매개변수
d텍스트를 읽을 종속성 개체입니다.
반환값
마지막 유효 텍스트입니다.

NumericRangeBehavior.cs 파일의 385 번째 라인에서 정의되었습니다.

385=> (string)d.GetValue(LastValidTextProperty);

다음을 참조함 : LastValidTextProperty.

다음에 의해서 참조됨 : OnPasting(), Tb_LostFocus().

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

◆ GetMax()

? double Dreamine.UI.Wpf.Behaviors.NumericRangeBehavior.GetMax ( DependencyObject d)
inlinestatic

대상 개체의 최대 허용값을 가져옵니다.

매개변수
d값을 읽을 종속성 개체입니다.
반환값
최대값이며, 제한이 없으면 null입니다.

NumericRangeBehavior.cs 파일의 283 번째 라인에서 정의되었습니다.

283=> (double?)d.GetValue(MaxProperty);

다음을 참조함 : MaxProperty.

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

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

◆ GetMin()

? double Dreamine.UI.Wpf.Behaviors.NumericRangeBehavior.GetMin ( DependencyObject d)
inlinestatic

대상 개체의 최소 허용값을 가져옵니다.

매개변수
d값을 읽을 종속성 개체입니다.
반환값
최소값이며, 제한이 없으면 null입니다.

NumericRangeBehavior.cs 파일의 232 번째 라인에서 정의되었습니다.

232=> (double?)d.GetValue(MinProperty);

다음을 참조함 : MinProperty.

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

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

◆ GetMode()

NumericRangeMode Dreamine.UI.Wpf.Behaviors.NumericRangeBehavior.GetMode ( DependencyObject d)
inlinestatic

대상 개체의 범위 위반 처리 방식을 가져옵니다.

매개변수
d값을 읽을 종속성 개체입니다.
반환값
구성된 처리 방식입니다.

NumericRangeBehavior.cs 파일의 334 번째 라인에서 정의되었습니다.

334=> (NumericRangeMode)d.GetValue(ModeProperty);

다음을 참조함 : ModeProperty.

다음에 의해서 참조됨 : OnPasting(), Tb_LostFocus(), Tb_TextChanged().

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

◆ OnIsEnabledChanged()

void Dreamine.UI.Wpf.Behaviors.NumericRangeBehavior.OnIsEnabledChanged ( DependencyObject d,
DependencyPropertyChangedEventArgs e )
inlinestaticprivate

활성화 값 변경을 처리하여 텍스트 상자의 검증 이벤트를 연결하거나 해제합니다.

매개변수
d값이 변경된 종속성 개체입니다.
e종속성 속성 변경 데이터입니다.

NumericRangeBehavior.cs 파일의 411 번째 라인에서 정의되었습니다.

412 {
413 if (d is not TextBox tb) return;
414
415 if ((bool)e.NewValue)
416 {
417 tb.Loaded += Tb_Loaded;
418 tb.TextChanged += Tb_TextChanged;
419 tb.LostFocus += Tb_LostFocus;
420 DataObject.AddPastingHandler(tb, OnPasting);
421 }
422 else
423 {
424 tb.Loaded -= Tb_Loaded;
425 tb.TextChanged -= Tb_TextChanged;
426 tb.LostFocus -= Tb_LostFocus;
427 DataObject.RemovePastingHandler(tb, OnPasting);
428 }
429 }

다음을 참조함 : OnPasting(), Tb_Loaded(), Tb_LostFocus(), Tb_TextChanged().

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

◆ OnPasting()

void Dreamine.UI.Wpf.Behaviors.NumericRangeBehavior.OnPasting ( object sender,
DataObjectPastingEventArgs e )
inlinestaticprivate

붙여넣을 텍스트를 미리 검증하고 구성된 방식에 따라 거부하거나 보정합니다.

매개변수
sender붙여넣기 대상 텍스트 상자입니다.
e붙여넣기 데이터와 취소 기능을 제공하는 이벤트 데이터입니다.

NumericRangeBehavior.cs 파일의 485 번째 라인에서 정의되었습니다.

486 {
487 if (sender is not TextBox tb) return;
488
489 if (e.DataObject.GetDataPresent(DataFormats.UnicodeText))
490 {
491 var pasteText = e.DataObject.GetData(DataFormats.UnicodeText) as string ?? string.Empty;
492 var future = GetFutureText(tb, pasteText);
493 if (!TryValidate(tb, future, out var corrected))
494 {
495 if (GetMode(tb) == NumericRangeMode.Reject)
496 {
497 e.CancelCommand();
498 tb.Text = GetLastValidText(tb) ?? string.Empty;
499 tb.CaretIndex = tb.Text.Length;
500 return;
501 }
502 e.CancelCommand(); // Clamp
503 tb.Text = corrected;
504 tb.CaretIndex = tb.Text.Length;
505 }
506 }
507 }

다음을 참조함 : GetFutureText(), GetLastValidText(), GetMode(), TryValidate().

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

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

◆ SetIsEnabled()

void Dreamine.UI.Wpf.Behaviors.NumericRangeBehavior.SetIsEnabled ( DependencyObject d,
bool value )
inlinestatic

대상 개체의 숫자 범위 동작 활성화 여부를 설정합니다.

매개변수
d값을 설정할 종속성 개체입니다.
value활성화 여부입니다.

NumericRangeBehavior.cs 파일의 156 번째 라인에서 정의되었습니다.

156=> d.SetValue(IsEnabledProperty, value);

다음을 참조함 : IsEnabledProperty.

◆ SetLastValidText()

void Dreamine.UI.Wpf.Behaviors.NumericRangeBehavior.SetLastValidText ( DependencyObject d,
string value )
inlinestaticprivate

대상 개체에 마지막 유효 텍스트를 저장합니다.

매개변수
d텍스트를 저장할 종속성 개체입니다.
value저장할 유효 텍스트입니다.

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

360=> d.SetValue(LastValidTextProperty, value);

다음을 참조함 : LastValidTextProperty.

다음에 의해서 참조됨 : Tb_Loaded(), Tb_LostFocus(), Tb_TextChanged().

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

◆ SetMax()

void Dreamine.UI.Wpf.Behaviors.NumericRangeBehavior.SetMax ( DependencyObject d,
double? value )
inlinestatic

대상 개체의 최대 허용값을 설정합니다.

매개변수
d값을 설정할 종속성 개체입니다.
value최대값이며, 제한하지 않으려면 null입니다.

NumericRangeBehavior.cs 파일의 258 번째 라인에서 정의되었습니다.

258=> d.SetValue(MaxProperty, value);

다음을 참조함 : MaxProperty.

◆ SetMin()

void Dreamine.UI.Wpf.Behaviors.NumericRangeBehavior.SetMin ( DependencyObject d,
double? value )
inlinestatic

대상 개체의 최소 허용값을 설정합니다.

매개변수
d값을 설정할 종속성 개체입니다.
value최소값이며, 제한하지 않으려면 null입니다.

NumericRangeBehavior.cs 파일의 207 번째 라인에서 정의되었습니다.

207=> d.SetValue(MinProperty, value);

다음을 참조함 : MinProperty.

◆ SetMode()

void Dreamine.UI.Wpf.Behaviors.NumericRangeBehavior.SetMode ( DependencyObject d,
NumericRangeMode value )
inlinestatic

대상 개체의 범위 위반 처리 방식을 설정합니다.

매개변수
d값을 설정할 종속성 개체입니다.
value적용할 처리 방식입니다.

NumericRangeBehavior.cs 파일의 309 번째 라인에서 정의되었습니다.

309=> d.SetValue(ModeProperty, value);

다음을 참조함 : ModeProperty.

◆ Tb_Loaded()

void Dreamine.UI.Wpf.Behaviors.NumericRangeBehavior.Tb_Loaded ( object sender,
RoutedEventArgs e )
inlinestaticprivate

텍스트 상자가 로드될 때 현재 텍스트를 마지막 유효값으로 저장합니다.

매개변수
sender로드된 텍스트 상자입니다.
e라우트 이벤트 데이터입니다.

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

456 {
457 if (sender is TextBox tb)
458 SetLastValidText(tb, tb.Text);
459 }

다음을 참조함 : SetLastValidText().

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

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

◆ Tb_LostFocus()

void Dreamine.UI.Wpf.Behaviors.NumericRangeBehavior.Tb_LostFocus ( object sender,
RoutedEventArgs e )
inlinestaticprivate

포커스를 잃을 때 최종 값을 검증하고 보정 또는 복원한 뒤 바인딩 원본을 갱신합니다.

매개변수
sender포커스를 잃은 텍스트 상자입니다.
e라우트 이벤트 데이터입니다.

NumericRangeBehavior.cs 파일의 585 번째 라인에서 정의되었습니다.

586 {
587 if (sender is not TextBox tb) return;
588
589 var mode = GetMode(tb);
590 if (!TryValidate(tb, tb.Text, out var corrected))
591 {
592 tb.Text = (mode == NumericRangeMode.Reject)
593 ? (GetLastValidText(tb) ?? corrected)
594 : corrected;
595 }
596 SetLastValidText(tb, tb.Text);
597
598 // 바인딩 원본 반영
599 var expr = tb.GetBindingExpression(TextBox.TextProperty);
600 expr?.UpdateSource();
601 }

다음을 참조함 : GetLastValidText(), GetMode(), SetLastValidText(), TryValidate().

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

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

◆ Tb_TextChanged()

void Dreamine.UI.Wpf.Behaviors.NumericRangeBehavior.Tb_TextChanged ( object sender,
TextChangedEventArgs e )
inlinestaticprivate

텍스트 변경을 처리하고 보정 모드에서 범위를 벗어난 값을 즉시 보정합니다.

매개변수
sender텍스트가 변경된 텍스트 상자입니다.
e텍스트 변경 이벤트 데이터입니다.

거부 모드의 복원은 자연스러운 입력을 위해 포커스를 잃을 때 수행됩니다.

NumericRangeBehavior.cs 파일의 541 번째 라인에서 정의되었습니다.

542 {
543 if (sender is not TextBox tb) return;
544
545 if (GetMode(tb) == NumericRangeMode.Clamp)
546 {
547 if (!TryValidate(tb, tb.Text, out var corrected))
548 {
549 tb.TextChanged -= Tb_TextChanged;
550 tb.Text = corrected;
551 tb.CaretIndex = tb.Text.Length;
552 tb.TextChanged += Tb_TextChanged;
553 }
554 else
555 {
556 SetLastValidText(tb, tb.Text);
557 }
558 }
559 }

다음을 참조함 : GetMode(), SetLastValidText(), Tb_TextChanged(), TryValidate().

다음에 의해서 참조됨 : OnIsEnabledChanged(), Tb_TextChanged().

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

◆ TryValidate()

bool Dreamine.UI.Wpf.Behaviors.NumericRangeBehavior.TryValidate ( TextBox tb,
string text,
out string corrected )
inlinestaticprivate

텍스트를 실수로 해석하여 최소·최대 범위를 검사하고 필요한 보정 문자열을 계산합니다.

매개변수
tb범위 설정을 읽을 텍스트 상자입니다.
text검증할 텍스트입니다.
corrected원본 텍스트 또는 가장 가까운 경계값 문자열을 반환합니다.
반환값
텍스트가 비어 있거나 유효한 범위 안의 숫자이면 true이고, 그렇지 않으면 false입니다.

NumericRangeBehavior.cs 파일의 692 번째 라인에서 정의되었습니다.

693 {
694 corrected = text ?? string.Empty;
695 if (string.IsNullOrWhiteSpace(text))
696 return true; // 빈값 허용 여부는 별도 정책에서 결정
697
698 var style = NumberStyles.Float | NumberStyles.AllowThousands;
699 var culture = CultureInfo.CurrentCulture;
700
701 if (!double.TryParse(text, style, culture, out var value))
702 {
703 return false; // 숫자 아님
704 }
705
706 var min = GetMin(tb);
707 var max = GetMax(tb);
708
709 if (min.HasValue && value < min.Value)
710 {
711 corrected = min.Value.ToString(culture);
712 return false;
713 }
714 if (max.HasValue && value > max.Value)
715 {
716 corrected = max.Value.ToString(culture);
717 return false;
718 }
719
720 return true;
721 }

다음을 참조함 : GetMax(), GetMin().

다음에 의해서 참조됨 : OnPasting(), Tb_LostFocus(), Tb_TextChanged().

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

멤버 데이터 문서화

◆ IsEnabledProperty

readonly DependencyProperty Dreamine.UI.Wpf.Behaviors.NumericRangeBehavior.IsEnabledProperty
static
초기값:
=
DependencyProperty.RegisterAttached(
"IsEnabled",
typeof(bool),
new PropertyMetadata(false, OnIsEnabledChanged))
static void OnIsEnabledChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)

숫자 범위 동작의 활성화 여부를 저장하는 연결 속성입니다.

NumericRangeBehavior.cs 파일의 65 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : GetIsEnabled(), SetIsEnabled().

◆ LastValidTextProperty

readonly DependencyProperty Dreamine.UI.Wpf.Behaviors.NumericRangeBehavior.LastValidTextProperty
staticprivate
초기값:
=
DependencyProperty.RegisterAttached(
"LastValidText",
typeof(string),
new PropertyMetadata(null))

마지막 유효 텍스트를 내부적으로 저장하는 연결 속성입니다.

NumericRangeBehavior.cs 파일의 125 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : GetLastValidText(), SetLastValidText().

◆ MaxProperty

readonly DependencyProperty Dreamine.UI.Wpf.Behaviors.NumericRangeBehavior.MaxProperty
static
초기값:
=
DependencyProperty.RegisterAttached(
"Max",
typeof(double?),
new PropertyMetadata(null))

선택적인 최대 허용값을 저장하는 연결 속성입니다.

NumericRangeBehavior.cs 파일의 95 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : GetMax(), SetMax().

◆ MinProperty

readonly DependencyProperty Dreamine.UI.Wpf.Behaviors.NumericRangeBehavior.MinProperty
static
초기값:
=
DependencyProperty.RegisterAttached(
"Min",
typeof(double?),
new PropertyMetadata(null))

선택적인 최소 허용값을 저장하는 연결 속성입니다.

NumericRangeBehavior.cs 파일의 80 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : GetMin(), SetMin().

◆ ModeProperty

readonly DependencyProperty Dreamine.UI.Wpf.Behaviors.NumericRangeBehavior.ModeProperty
static
초기값:
=
DependencyProperty.RegisterAttached(
"Mode",
new PropertyMetadata(NumericRangeMode.Clamp))

범위를 벗어난 입력의 처리 방식을 저장하는 연결 속성입니다.

NumericRangeBehavior.cs 파일의 110 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : GetMode(), SetMode().


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