Вы можете сделать это с помощью PlatformEffect
довольно легко.
Xaml Пример:
<Entry Placeholder="Password" IsPassword="true">
<Entry.Effects>
<sushi:CapsEntrytEffect />
</Entry.Effects>
</Entry>
Примечание: xmlns: sushi в этом примере - xmlns
для местоположенияRoutingEffect
реализация
RoutingEffect в библиотеке NetStd
На этот класс нужно ссылаться через sushi
xmlns в примере XAML
public class CapsEntrytEffect : RoutingEffect
{
public CapsEntrytEffect() : base("Sushi.CapsEntrytEffect")
{
}
}
PlatformEffect для Android
Примечание. Вы добавляете InputFilterAllCaps
в текущий список фильтров EditText Android-виджета.
public class CapsEntrytEffect : PlatformEffect
{
protected override void OnAttached()
{
var editText = Control as EditText;
editText.SetFilters(editText.GetFilters().Append(new InputFilterAllCaps()).ToArray());
}
protected override void OnDetached()
{
}
}
PlatformEffect для iOS
public class CapsEntrytEffect : PlatformEffect
{
protected override void OnAttached()
{
var editField = Control as UITextField;
editField.AutocapitalizationType = UITextAutocapitalizationType.AllCharacters;
}
protected override void OnDetached()
{
}
}
В каждом из проектовчто вы реализуете PlatformEffect, убедитесь, что вы включили атрибуты ResolutionGroupName
и ExportEffect
, чтобы формы могли найти и активировать эффект для этой платформы.
ResolutionGroupName и ExportEffect Example ::
[assembly: ResolutionGroupName("Sushi")]
[assembly: ExportEffect(typeof(CapsEntrytEffect), "CapsEntrytEffect")]
re: https://blog.xamarin.com/customizing-xamarin-forms-controls-with-effects/