如何在 xamarin 表单中自动大写 keyboard/entry
How to auto-capitalize keyboard/entry in xamarin forms
我有两个条目用户名和密码。用户名和密码始终为大写。我怎样才能强制键盘或条目,当我输入一些东西时,文本将是大写的?
<Frame StyleClass="lpframe" x:Name="usernameFrame" CornerRadius="5" BorderColor="Transparent" HasShadow="False">
<StackLayout>
<Label Text="USERNAME" StyleClass="lbl-login">
<Label.FontFamily>
<OnPlatform x:TypeArguments="x:String">
<On Platform="Android" Value="OpenSans-Semibold.ttf#OpenSans-Semibold"/>
</OnPlatform>
</Label.FontFamily>
</Label>
<local:CustomEntry Placeholder="Username" PlaceholderColor="#879baa" Unfocused="entUser_Unfocused" StyleClass="form-control" ReturnType="Next" x:Name="entUser">
<local:CustomEntry.FontFamily>
<OnPlatform x:TypeArguments="x:String">
<On Platform="Android" Value="OpenSans-Regular.ttf#OpenSans-Regular"/>
</OnPlatform>
</local:CustomEntry.FontFamily>
</local:CustomEntry>
</StackLayout>
</Frame>
<Frame StyleClass="lpframe" x:Name="passwordFrame" CornerRadius="5" BorderColor="Transparent" HasShadow="False">
<StackLayout>
<Label Text="PASSWORD" StyleClass="lbl-login">
<Label.FontFamily>
<OnPlatform x:TypeArguments="x:String">
<On Platform="Android" Value="OpenSans-Semibold.ttf#OpenSans-Semibold"/>
</OnPlatform>
</Label.FontFamily>
</Label>
<local:CustomEntry Placeholder="Password" PlaceholderColor="#879baa" Unfocused="entPassword_Unfocused" IsPassword="True" StyleClass="form-control" ReturnType="Go" x:Name="entPassword">
<local:CustomEntry.FontFamily>
<OnPlatform x:TypeArguments="x:String">
<On Platform="Android" Value="OpenSans-Regular.ttf#OpenSans-Regular"/>
</OnPlatform>
</local:CustomEntry.FontFamily>
</local:CustomEntry>
</StackLayout>
</Frame>
您可以通过 PlatformEffect
相当轻松地做到这一点。
Xaml 示例:
<Entry Placeholder="Password" IsPassword="true">
<Entry.Effects>
<sushi:CapsEntrytEffect />
</Entry.Effects>
</Entry>
注意:此示例中的 xmlns:sushi 是 xmlns
用于 RoutingEffect
实现的位置
NetStd 库中的 RoutingEffect
此 class 将通过 XAML 示例中的 sushi
xmlns 引用
public class CapsEntrytEffect : RoutingEffect
{
public CapsEntrytEffect() : base("Sushi.CapsEntrytEffect")
{
}
}
Android
的平台效果
注意:您正在向 Android 小部件 EditText 的当前过滤器列表中添加 InputFilterAllCaps
。
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()
{
}
}
iOS
的 PlatformEffect
public class CapsEntrytEffect : PlatformEffect
{
protected override void OnAttached()
{
var editField = Control as UITextField;
editField.AutocapitalizationType = UITextAutocapitalizationType.AllCharacters;
}
protected override void OnDetached()
{
}
}
在您实施 PlatformEffect 的每个项目中,确保您包含 ResolutionGroupName
和 ExportEffect
属性,以便 Forms 可以找到并激活该平台的效果。
ResolutionGroupName 和 ExportEffect 示例::
[assembly: ResolutionGroupName("Sushi")]
[assembly: ExportEffect(typeof(CapsEntrytEffect), "CapsEntrytEffect")]
回复:https://blog.xamarin.com/customizing-xamarin-forms-controls-with-effects/
现在您可以使用 Create 方法工厂来修改键盘行为,如下所示:
<Entry Placeholder="Enter text here">
<Entry.Keyboard>
<Keyboard x:FactoryMethod="Create">
<x:Arguments>
<KeyboardFlags>CapitalizeWord</KeyboardFlags>
</x:Arguments>
</Keyboard>
</Entry.Keyboard>
官方文档如下:Customize the keyboard
以下是所有支持的标志:
- None – 键盘没有添加任何功能。
- CapitalizeSentence – 表示每句输入的第一个单词的首字母自动大写
- 拼写检查 – 表示将对输入的文本执行拼写检查。
- 建议 – 表示将对输入的文本提供单词补全。
- CapitalizeWord – 表示每个单词的首字母自动大写。
- CapitalizeCharacter – 表示每个字符都会自动大写。
- CapitalizeNone – 表示不会发生自动大写。
- 全部 - 表示拼写检查、单词补全和句子大写将在输入的文本上进行。
我有两个条目用户名和密码。用户名和密码始终为大写。我怎样才能强制键盘或条目,当我输入一些东西时,文本将是大写的?
<Frame StyleClass="lpframe" x:Name="usernameFrame" CornerRadius="5" BorderColor="Transparent" HasShadow="False">
<StackLayout>
<Label Text="USERNAME" StyleClass="lbl-login">
<Label.FontFamily>
<OnPlatform x:TypeArguments="x:String">
<On Platform="Android" Value="OpenSans-Semibold.ttf#OpenSans-Semibold"/>
</OnPlatform>
</Label.FontFamily>
</Label>
<local:CustomEntry Placeholder="Username" PlaceholderColor="#879baa" Unfocused="entUser_Unfocused" StyleClass="form-control" ReturnType="Next" x:Name="entUser">
<local:CustomEntry.FontFamily>
<OnPlatform x:TypeArguments="x:String">
<On Platform="Android" Value="OpenSans-Regular.ttf#OpenSans-Regular"/>
</OnPlatform>
</local:CustomEntry.FontFamily>
</local:CustomEntry>
</StackLayout>
</Frame>
<Frame StyleClass="lpframe" x:Name="passwordFrame" CornerRadius="5" BorderColor="Transparent" HasShadow="False">
<StackLayout>
<Label Text="PASSWORD" StyleClass="lbl-login">
<Label.FontFamily>
<OnPlatform x:TypeArguments="x:String">
<On Platform="Android" Value="OpenSans-Semibold.ttf#OpenSans-Semibold"/>
</OnPlatform>
</Label.FontFamily>
</Label>
<local:CustomEntry Placeholder="Password" PlaceholderColor="#879baa" Unfocused="entPassword_Unfocused" IsPassword="True" StyleClass="form-control" ReturnType="Go" x:Name="entPassword">
<local:CustomEntry.FontFamily>
<OnPlatform x:TypeArguments="x:String">
<On Platform="Android" Value="OpenSans-Regular.ttf#OpenSans-Regular"/>
</OnPlatform>
</local:CustomEntry.FontFamily>
</local:CustomEntry>
</StackLayout>
</Frame>
您可以通过 PlatformEffect
相当轻松地做到这一点。
Xaml 示例:
<Entry Placeholder="Password" IsPassword="true">
<Entry.Effects>
<sushi:CapsEntrytEffect />
</Entry.Effects>
</Entry>
注意:此示例中的 xmlns:sushi 是 xmlns
用于 RoutingEffect
实现的位置
NetStd 库中的 RoutingEffect
此 class 将通过 XAML 示例中的 sushi
xmlns 引用
public class CapsEntrytEffect : RoutingEffect
{
public CapsEntrytEffect() : base("Sushi.CapsEntrytEffect")
{
}
}
Android
的平台效果注意:您正在向 Android 小部件 EditText 的当前过滤器列表中添加 InputFilterAllCaps
。
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()
{
}
}
iOS
的 PlatformEffectpublic class CapsEntrytEffect : PlatformEffect
{
protected override void OnAttached()
{
var editField = Control as UITextField;
editField.AutocapitalizationType = UITextAutocapitalizationType.AllCharacters;
}
protected override void OnDetached()
{
}
}
在您实施 PlatformEffect 的每个项目中,确保您包含 ResolutionGroupName
和 ExportEffect
属性,以便 Forms 可以找到并激活该平台的效果。
ResolutionGroupName 和 ExportEffect 示例::
[assembly: ResolutionGroupName("Sushi")]
[assembly: ExportEffect(typeof(CapsEntrytEffect), "CapsEntrytEffect")]
回复:https://blog.xamarin.com/customizing-xamarin-forms-controls-with-effects/
现在您可以使用 Create 方法工厂来修改键盘行为,如下所示:
<Entry Placeholder="Enter text here">
<Entry.Keyboard>
<Keyboard x:FactoryMethod="Create">
<x:Arguments>
<KeyboardFlags>CapitalizeWord</KeyboardFlags>
</x:Arguments>
</Keyboard>
</Entry.Keyboard>
官方文档如下:Customize the keyboard
以下是所有支持的标志:
- None – 键盘没有添加任何功能。
- CapitalizeSentence – 表示每句输入的第一个单词的首字母自动大写
- 拼写检查 – 表示将对输入的文本执行拼写检查。
- 建议 – 表示将对输入的文本提供单词补全。
- CapitalizeWord – 表示每个单词的首字母自动大写。
- CapitalizeCharacter – 表示每个字符都会自动大写。
- CapitalizeNone – 表示不会发生自动大写。
- 全部 - 表示拼写检查、单词补全和句子大写将在输入的文本上进行。