[Xamarin] Entry 숫자만 적용
2023. 1. 6. 15:44ㆍ.NET/Xamarin
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 |
---|