Изменения дизайна в Xamarin.Forms приводят к сбою событий - PullRequest
0 голосов
/ 31 октября 2019

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

Это работает:

<StackLayout>
    <!-- Place new controls here -->
    <Button x:Name="Testbtn" Text="Click Me" />
    <Label Text="Welcome to Xamarin.Forms!" 
        HorizontalOptions="Center"
        VerticalOptions="CenterAndExpand" />
</StackLayout>
public MainPage()
{
    InitializeComponent();
    Testbtn.Clicked += OnClicked;     
}

async void OnClicked(object sender, EventArgs e)
{
    var btn = sender as Button;
    await DisplayAlert("Test", String.Format("Clicked !! {0}", btn.Text), "OK");
}

При изменении макета приложение перестраивается, но событияне стреляйте ...

<Grid Margin="5">
    <Grid.RowDefinitions>
        <RowDefinition Height="3.333" />
        <RowDefinition Height="3.333" />
        <RowDefinition Height="3.333" />
    </Grid.RowDefinitions>
    <StackLayout Grid.Row="2" >             
        <Button x:Name="btnTest" Text="Click Me" />
        <Button x:Name="btnTest1" Text="And Another" />
    </StackLayout>
</Grid>
public MainPage()
{
    InitializeComponent();
    Testbtn.Clicked += OnClicked; 
    Testbtn1.Clicked += OnClicked;      
}

async void OnClicked(object sender, EventArgs e)
{
    var btn = sender as Button;
    await DisplayAlert("Test", String.Format("Clicked !! {0}", btn.Text), "OK");
}

1 Ответ

0 голосов
/ 31 октября 2019

Ваши кнопки в XAML называются иначе, чем те, на которые вы ссылаетесь в приведенном ниже коде. То, что у вас есть:

<Button x:Name="btnTest" Text="Click Me" />
<Button x:Name="btnTest1" Text="And Another" />

, поэтому код должен быть:

btnTest.Clicked += OnClicked; 
btnTest1.Clicked += OnClicked;   

вместо:

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