Кнопка с фиксированной точкой, использующая абсолютный макет, не реагирует на события - PullRequest
0 голосов
/ 10 июля 2020

У меня есть список на странице с контентом. Я разместил кнопку с фиксированной точкой (думаю, это имя собственное) на странице с помощью AvsoluteLayout. У меня есть кнопка, идущая в верхнюю часть представления, используя RaiseChild. Событие щелчка запускается не на кнопке, а на представлении списка.

my при появлении, где пузырьковая кнопка является предметом проблемы

 

    protected override void OnAppearing()
            {
                base.OnAppearing();
                IsBusy = true;
                if(viewModel.PlayerActivities == null)
                {
                    viewModel.LoadPlayerActivites.Execute(null);
                }
                IsBusy = false;
                
                grid.RaiseChild(bubblebutton);
                bubblebutton.Clicked += Bubblebutton_Clicked;
            }
    
    
    ```
    
    ```
     <AbsoluteLayout  >
                    
                    <ImageButton x:Name="bubblebutton" 
                        BackgroundColor="Transparent"
                        Source="st_fab_button.png"
                        AbsoluteLayout.LayoutBounds="3,500,700,80" 
                                
                        Clicked="bubblebutton_Clicked"
                        IsEnabled="True"
                    />               
    </AbsoluteLayout>
    ```

[button click is not happening][1]

Thank you for any help sorry for poor clip art skill


  [1]: https://i.stack.imgur.com/QJixO.png

1 Ответ

0 голосов
/ 13 июля 2020

Добро пожаловать в SO!

Если вы используете Button внутри Item из ListView, следует использовать архитектуру MVVM . Это означает, что мы должны использовать модель привязки для получения события щелчка.

Например, модифицированный код, как показано ниже:

```
 <AbsoluteLayout  >
                
                <ImageButton x:Name="bubblebutton" 
                    BackgroundColor="Transparent"
                    Source="st_fab_button.png"
                    AbsoluteLayout.LayoutBounds="3,500,700,80" 
                            
                    Command="{Binding MyCommand}"
                    IsEnabled="True"
                />               
</AbsoluteLayout>
```

Затем в вашем ViewModle следует объявить MyCommand:

public ICommand MyCommand { private set; get; }

public ViewModel()
{
    MyCommand = new Command(
        execute: () =>
        {
           // do some thing
            RefreshCanExecutes();
        },
        canExecute: () =>
        {
           // return !IsEditing;
        });

    ···

}

Кроме того, вы также можете передать Параметры , подробнее можете посмотреть этот документ .

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