Ячейка ввода теряет фокус при нажатии кнопки в формах ксамарина - PullRequest
1 голос
/ 26 апреля 2019

У меня есть кнопки, которые при нажатии на нее действуют как клавиатура, должны заполнить поле ввода, которое сфокусировано. но это не работает, потому что нажатие кнопки приводит к тому, что запись теряет фокус. Кто-нибудь может дать мне подсказку, чтобы решить эту проблему?

    private void Button_Clicked(object sender, EventArgs e)
    {   Button button = (Button)sender;
        string pressed = button.Text;
        if (this.FirstDigit.IsFocused)
        {
            this.FirstDigit.Text += pressed;
        }and so on ...

Ответы [ 2 ]

1 голос
/ 29 апреля 2019

Я считаю, что трудно удерживать фокус ввода при нажатии кнопки.

Я пишу WorkAroud для вас, когда запись Unfocused, используйте previousEntry для записи этой записи:

public partial class MainPage : ContentPage
{
    public Entry previousEntry;

    public MainPage()
    {
        InitializeComponent();

        first.Unfocused += (object sender, FocusEventArgs e) => {
            previousEntry = (Entry)sender;
        };

        second.Unfocused += (object sender, FocusEventArgs e) => {
            previousEntry = (Entry)sender;
        };

        third.Unfocused += (object sender, FocusEventArgs e) => {
            previousEntry = (Entry)sender;
        };
    }

    private void Button_Clicked(object sender, EventArgs e)
    {

        Button button = (Button)sender;
        string pressed = button.Text;

        if (previousEntry != null)
        {
            previousEntry.Text += pressed;
        }

    }    
}

И в Xaml :

<StackLayout>
    <!-- Place new controls here -->

    <Button Text="click me" Clicked="Button_Clicked"  HorizontalOptions="Center" VerticalOptions="CenterAndExpand"/>

    <Entry x:Name="first" Text="1+" HorizontalOptions="Center" VerticalOptions="CenterAndExpand"/>
    <Entry x:Name="second" Text="2+" HorizontalOptions="Center" VerticalOptions="CenterAndExpand"/>
    <Entry x:Name="third" Text="3+" HorizontalOptions="Center" VerticalOptions="CenterAndExpand"/>

</StackLayout>

Дайте мне знать, если это работает.

0 голосов
/ 26 апреля 2019

Я бы позвонил

entry.Focus();

в этом методе, чтобы заставить его работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...