我刚开始在Xamarin工作,正在撰写一款针对iOS和Android的应用。我试图在他们之间的公共库中保留我的所有UI设计,并开始发现线条有点模糊。我目前的要求是禁用XAML中“Entry”标记对象的自动大写。这是可以通过标记完成的吗?我找不到任何支持此行为的属性。如果没有,我该怎么做呢?
答案 0 :(得分:8)
如果您打算在一个或多个页面中使用此键盘,则需要将以下代码添加到App.xaml ResourceDictionary
。如果您想在多个地方使用它,但只能在一个ContentPage
中使用,则需要将其添加到ContentPage
ResourceDictionary
。否则,您可以将其直接添加到Entry
。
另请参阅here了解可用的KeyboardFlag
值。我只是在下面使用None
。
如果要添加到ResourceDictionary
:
<ContentPage.Resources>
<ResourceDictionary>
<Keyboard x:Key="NoCapitalizationKeyboard"
x:FactoryMethod="Create">
<x:Arguments>
<KeyboardFlags>None</KeyboardFlags>
</x:Arguments>
</Keyboard>
</ResourceDictionary>
</ContentPage.Resources>
<Entry Keyboard="{StaticResource NoCapitalizationKeyboard}" />
或直接转到Entry
:
<Entry>
<Entry.Keyboard>
<Keyboard x:FactoryMethod="Create">
<x:Arguments>
<KeyboardFlags>None</KeyboardFlags>
</x:Arguments>
</Keyboard>
</Entry.Keyboard>
</Entry>
答案 1 :(得分:2)
您可以设置Keyboard="Text"
- Default
键盘执行大写。
另请查看可应用的其他键盘settings。这些允许您切换建议和其他事情。
或者,我建议您为UITextField
创建一个简单的Effect,并使用原生iOS API设置所需的标记(AutocapitalizationType = UITextAutocapitalizationType.None;
)。
我们还有documentation关于如何创建自定义渲染器以实现目标但是自从引入效果以来,它似乎有点过分。
答案 2 :(得分:2)
答案 3 :(得分:1)
有一种解决方法,可以使用不使用大写字母的条目,例如“用户名”。为此,您只需使用
<Entry Keyboard="Email" Placeholder="Username"/>
最后,您将获得一个非自动大写的条目,并且如果需要,您也可以将其用作电子邮件文本。
答案 4 :(得分:0)
无论是在模拟器中还是在Android设备中,您都会在
如果您使用屏幕键盘,即使在仿真器中也是如此(就像您通常在99%的情况下使用手机或平板电脑一样,这不是问题)。如上所述,在 这也会在密码输入对话框中发生。烦人,但看起来还没有人将其标记为错误。