728x90
반응형
728x170
▶ NumericValidationBehavior.cs
namespace TestProject;
/// <summary>
/// 숫자 검증 동작
/// </summary>
public class NumericValidationBehavior : Behavior<Entry>
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Method
////////////////////////////////////////////////////////////////////////////////////////// Protected
#region 부착시 처리하기 - OnAttachedTo(entry)
/// <summary>
/// 부착시 처리하기
/// </summary>
/// <param name="entry">엔트리</param>
protected override void OnAttachedTo(Entry entry)
{
entry.TextChanged += entry_TextChanged;
base.OnAttachedTo(entry);
}
#endregion
#region 탈착시 처리하기 - OnDetachingFrom(entry)
/// <summary>
/// 탈착시 처리하기
/// </summary>
/// <param name="entry">엔트리</param>
protected override void OnDetachingFrom(Entry entry)
{
entry.TextChanged -= entry_TextChanged;
base.OnDetachingFrom(entry);
}
#endregion
////////////////////////////////////////////////////////////////////////////////////////// Private
#region 엔트리 텍스트 변경시 처리하기 - entry_TextChanged(sender, e)
/// <summary>
/// 엔트리 텍스트 변경시 처리하기
/// </summary>
/// <param name="sender">이벤트 발생자</param>
/// <param name="e">이벤트 인자</param>
private void entry_TextChanged(object sender, TextChangedEventArgs e)
{
double result;
bool isValid = double.TryParse(e.NewTextValue, out result);
((Entry)sender).TextColor = isValid ? Colors.Black : Colors.Red;
}
#endregion
}
728x90
▶ MainPage.xaml
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage x:Class="TestProject.MainPage"
xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:TestProject">
<Entry
HorizontalOptions="Center"
VerticalOptions="Center"
WidthRequest="200"
Placeholder="실수 값을 입력해 주시기 바랍니다.">
<Entry.Behaviors>
<local:NumericValidationBehavior />
</Entry.Behaviors>
</Entry>
</ContentPage>
728x90
반응형
그리드형(광고전용)
댓글을 달아 주세요