我必須創建一個用戶必須輸入其年齡的表單。我想用一個數字鍵盤:是否可以指定不帶逗號或小數點分隔符的Xamarin表單輸入數字鍵盤?
<Entry
x:Name="AgeEntry"
VerticalOptions="FillAndExpand"
HorizontalOptions="FillAndExpand"
Keyboard="Numeric"
/>
但它表明即使是小數點的性格,我想只顯示號碼...
我必須創建一個用戶必須輸入其年齡的表單。我想用一個數字鍵盤:是否可以指定不帶逗號或小數點分隔符的Xamarin表單輸入數字鍵盤?
<Entry
x:Name="AgeEntry"
VerticalOptions="FillAndExpand"
HorizontalOptions="FillAndExpand"
Keyboard="Numeric"
/>
但它表明即使是小數點的性格,我想只顯示號碼...
要限制Entry
只接受你能數使用Behavior或Trigger。
這兩者都會對使用者輸入內容有所反應。因此,爲了您的使用,您可以讓觸發器或行爲查找任何不是數字的字符並將其刪除。
事情是這樣的一個行爲(請注意,我寫了這一切的SO,並沒有嘗試編譯它,讓我知道,如果它不工作):
using System.Linq;
using Xamarin.Forms;
namespace MyApp {
public class NumericValidationBehavior : 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 args)
{
if(!string.IsNullOrWhiteSpace(args.NewTextValue))
{
bool isValid = args.NewTextValue.ToCharArray().All(x=>char.IsDigit(x)); //Make sure all characters are numbers
((Entry)sender).Text = isValid ? args.NewTextValue : args.NewTextValue.Remove(args.NewTextValue.Length - 1);
}
}
}
}
在XAML
然後:
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:MyApp;assembly=MyApp"> <!-- Add the local namespace so it can be used below, change MyApp to your actual namespace -->
<Entry x:Name="AgeEntry"
VerticalOptions="FillAndExpand"
HorizontalOptions="FillAndExpand"
Keyboard="Numeric">
<Entry.Behaviors>
<local:NumericValidationBehavior />
</Entry.Behaviors>
</Entry>
</ContentPage>
@Falco剛剛測試過,並有一個與邏輯問題。如果嘗試使用以前的版本,請嘗試再次複製代碼。 – hvaughan3
嗨,謝謝你,你很善良,我在ToCharArray()中找不到「All()」,它不會編譯......無論如何,我理解了如何使用bahavior並在代碼中更改該行。無論如何,我是Xamarin的新手,我很驚訝有些人認爲它不是內置的......最好不是在鍵盤上顯示所有的「點」。我將學習如何創建自定義鍵盤... – Falco
@Falco樂於助人。爲了讓'All()'編譯,您需要在類的頂部添加'using System.Linq;'(我在示例代碼中添加了它)。我會說創建一個自定義鍵盤可能會很困難,但這並不是我自己研究過的東西。 – hvaughan3
您需要創建自己的鍵盤才能使其跨平臺工作。但是,您可以輕鬆添加觸發器,只要輸入逗號和小數點即可清除逗號和小數點,以防止用戶使用它。讓我知道你是否想看到該代碼。 – hvaughan3
...是的,這將有助於看到代碼,我很新xamarin代碼 – Falco