Я делаю специализированный денежный калькулятор с использованием записей xamarin.forms.Поскольку это калькулятор, я хочу разрешить только цифры, точки, запятые и, возможно, знак доллара, если это возможно.Я новичок в программировании в целом и пытался следовать примеру здесь поведения, которое частично выполняло бы работу.Этот код кажется более сложным, чем нужно для выполнения работы, которая кажется достаточно простой и даже не делает всего, что я хочу сделать.Я пробовал другие методы / способы, но они сделаны много лет назад и, похоже, больше не работают.Вот что у меня есть в C #
using System;
using Xamarin.Forms;
namespace CattleCalc
{
class BehaviorsPage
{
public class NumbersOnlyBehavior : Behavior<Entry>
{
protected Action<Entry, string> AdditionalCheck;
protected override void OnAttachedTo(Entry bindable)
{
base.OnAttachedTo(bindable);
bindable.TextChanged += TextChanged_Handler;
}
protected override void OnDetachingFrom(Entry bindable)
{
base.OnDetachingFrom(bindable);
}
protected virtual void TextChanged_Handler(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;
else
AdditionalCheck?.Invoke(((Entry)sender), e.OldTextValue);
}
}
}
}
И один пример записи из MainPage.Xaml ...
<customentry:MyEntry x:Name="PurchasePriceEntry" Text="{Binding Source={x:Reference PurchasePriceStepper}, Path=Value}" Placeholder="1.60"
TextColor="DarkSlateGray" FontAttributes="Bold" BackgroundColor="Ivory" TranslationX="3"
Grid.Column="1" Grid.Row="0" HorizontalTextAlignment="Center" Keyboard="Numeric" ReturnType="Next" VerticalOptions="End" MaxLength="5"
TextChanged="PurchasePriceEntry_Completed">
<Entry.Behaviors>
<local:NumbersOnlyBehavior />
</Entry.Behaviors>
</customentry:MyEntry>
Когда я запускаю это, я получаю пару ошибок, в основном утверждаячто мое поведение не было найдено .... Я даже направляюсь в правильном направлении ??Или есть более простой способ сделать это?Я вовсе не против того, чтобы отбирать этот код и идти другим путем, если это будет проще / проще, чем использование поведения !!