有没有办法在Xamarin Forms的Entry'XAML上禁用自动资本化

时间:2016-10-11 17:47:49

标签: c# android xaml xamarin.ios xamarin.forms

我刚开始在Xamarin工作,正在撰写一款针对iOS和Android的应用。我试图在他们之间的公共库中保留我的所有UI设计,并开始发现线条有点模糊。我目前的要求是禁用XAML中“Entry”标记对象的自动大写。这是可以通过标记完成的吗?我找不到任何支持此行为的属性。如果没有,我该怎么做呢?

5 个答案:

答案 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)

有点晚了,但是现在有了一种简单的方法来获取没有标志的普通键盘:

<Entry
    FontSize="Small"
    Keyboard="Plain"
    Text="Text"/>

文档here

答案 3 :(得分:1)

有一种解决方法,可以使用不使用大写字母的条目,例如“用户名”。为此,您只需使用

<Entry Keyboard="Email" Placeholder="Username"/>

最后,您将获得一个非自动大写的条目,并且如果需要,您也可以将其用作电子邮件文本。

答案 4 :(得分:0)

无论是在模拟器中还是在Android设备中,您都会在物理键盘时发现这种情况。

如果您使用屏幕键盘,即使在仿真器中也是如此(就像您通常在99%的情况下使用手机或平板电脑一样,这不是问题)。如上所述,在

这也会在密码输入对话框中发生。烦人,但看起来还没有人将其标记为错误。