IT’s Ha

[Xamarin] Entry 숫자만 적용 본문

.NET/Xamarin

[Xamarin] Entry 숫자만 적용

Deleloper Ha 2023. 1. 6. 15:44
728x90
반응형

안녕하세요.  오늘은 Xamarin Entry에 숫자만 적용하는 방법을 설명 드리겠습니다.

Entry는 기본 텍스트 박스라고 생각하시면 됩니다.

반응형

1. Entry에 키보드 숫자만 입력가능하게 설정

<Entry Text="0"         
       Keyboard="Numeric"
       Placeholder="변경수량"
       PlaceholderColor="LightGray">
	<Entry.Behaviors>
		<mv:NumericValidationBehavior/>
    </Entry.Behaviors>
</Entry>

받을 수 있는 키패드 타입을 숫자로 지정합니다.

2. NumericBehavior 클레스 생성

public class NumericBehavior : Behavior<Entry>
    {

        protected override void OnAttachedTo(Entry entry)
        {
            entry.TextChanged += OnEntryTextChanged;
            base.OnAttachedTo(entry);
        }

        protected override void OnDetachingFrom(Entry entry)
        {
            entry.TextChanged -= OnEntryTextChanged;
            base.OnDetachingFrom(entry);
        }

        private static void OnEntryTextChanged(object sender, TextChangedEventArgs e)
        {

            if (string.IsNullOrEmpty(e.NewTextValue))
            {
                ((Entry)sender).Text = 0.ToString();
                return;
            }

            double _;
            if (!double.TryParse(e.NewTextValue, out _))
                ((Entry)sender).Text = e.OldTextValue;

        }
    }

 

3. 해석

protected override void OnAttachedTo(Entry entry)
{
	entry.TextChanged += OnEntryTextChanged;
	base.OnAttachedTo(entry);
}

protected override void OnDetachingFrom(Entry entry)
{
	entry.TextChanged -= OnEntryTextChanged;
	base.OnDetachingFrom(entry);
}

1) OnAttachedTo와 OnDeatchingForm 메서드는 바인딩과 관려되어 있는 함수입니다. 바인딩시 OnEntryTextChanged함수를 사용하도록하고, 바인딩 해제시 OnEntryTextChanged를 제거하는 함수입니다.

 private static void OnEntryTextChanged(object sender, TextChangedEventArgs e)
{
	if (string.IsNullOrEmpty(e.NewTextValue))
	{
		((Entry)sender).Text = 0.ToString();
		return;
	}
	double _;
	if (!double.TryParse(e.NewTextValue, out _))
		((Entry)sender).Text = e.OldTextValue;
}

 

2)Entry Text값이 null 또는 공백에서 0으로 처리하는 내용입니다. 아래의 내용은 double 처리를 하기위하여 구현하였습니다.

728x90
반응형

'.NET > Xamarin' 카테고리의 다른 글

[Xamarin] Xamarin.Forms MVVM 디자인 패턴 적용  (0) 2023.01.16
Comments