Как автоматически использовать заглавные буквы / ввод в формах xamarin - PullRequest
0 голосов
/ 08 ноября 2018

У меня есть две записи Имя пользователя и Пароль. Имя пользователя и пароль всегда в верхнем регистре. Как я могу заставить клавиатуру или ввод, чтобы, когда я что-то печатал, текст был в верхнем регистре?

<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>

1 Ответ

0 голосов
/ 08 ноября 2018

Вы можете сделать это с помощью 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/

...