дочерний элемент xamarin stacklayout удаляется сам

У меня есть простой Stacklayout, который показывает кнопки. Я хочу позволить детям удалиться из stacklayout.

этот проект предназначен только для тестирования, поэтому каждая кнопка связана с одним и тем же обработчиком событий.

private void Button_Pressed_1(object sender, EventArgs e)
{
    stack.Children.RemoveAt(stack.Children.Count - 1);
}

все нормально, пока одна кнопка не удалится сама собой, затем появится следующая неподдерживаемая ошибка:

Необработанное исключение:

System.NotSupportedException: невозможно активировать экземпляр типа Xamarin.Forms.Platform.Android.AppCompat.ButtonRenderer из собственного дескриптора 0xbfb79bfc (key_handle 0x3e59524).

Кто-нибудь знает, как это сделать? Поскольку это nonSupportedException, простая попытка и улов не помогли

РЕДАКТИРОВАТЬ: У меня все заработало, я зарегистрировал обработчик событий в Pressed-Event. Видимо, проблема в том, что при использовании Clicke-Event все работает нормально.


person Phil Noderer    schedule 10.08.2018    source источник


Ответы (1)


Какую версию Xamarin вы используете? Я пробовал с Xamarin.Form 3.0.0.561731, и он работал хорошо. Пожалуйста, проверьте мой код, как показано ниже:

Xaml-страница:

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:local="clr-namespace:RemoveItSelf"
             x:Class="RemoveItSelf.MainPage">

    <StackLayout x:Name="stack">
        <!-- Place new controls here -->
        <Label Text="Welcome to Xamarin.Forms!" 
           HorizontalOptions="Center"
           VerticalOptions="CenterAndExpand" />
        <Label Text="Welcome to Xamarin.Forms!" 
               HorizontalOptions="Center"
               VerticalOptions="CenterAndExpand" />
        <Button Text="Remove" Clicked="PressMeButton_Clicked"></Button>
    </StackLayout>

</ContentPage>

Страница Xaml.cs:

namespace RemoveItSelf
{
    public partial class MainPage : ContentPage
    {
        public MainPage()
        {
            InitializeComponent();
        }

        private void PressMeButton_Clicked(object sender, EventArgs e)
        {
            //stack.Children.RemoveAt(0);
            stack.Children.RemoveAt(stack.Children.Count - 1);
        }
    }
}
person Nhan Phan    schedule 10.08.2018
comment
У меня также установлена ​​версия 3.0.0.561731 - person Phil Noderer; 10.08.2018
comment
Я просто попробовал ваш код, и он сработал. Я не понимаю, почему в моем проекте возникает исключение - person Phil Noderer; 10.08.2018
comment
Пожалуйста, поделитесь своей страницей xaml также - person Nhan Phan; 10.08.2018