Связывающая команда не отвечает вообще - PullRequest
0 голосов
/ 23 апреля 2019

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

Вот пример:

IrrigNetPage.xaml (просмотреть)

<StackLayout.GestureRecognizers>
    <TapGestureRecognizer Command="{Binding TabTappedCommand}" CommandParameter="map"/>
</StackLayout.GestureRecognizers>

<Grid IsVisible="{Binding IsGridHeaderVisible}">
    <Grid.GestureRecognizers>
        <TapGestureRecognizer Command="{Binding HideListOnTapCommand}"/>
    </Grid.GestureRecognizers>
</Grid>

IrrigNetPage.xaml.cs

public partial class IrrigNetPage : ContentPage
{
    public IrrigNetPage ()
    {
        InitializeComponent ();
        BindingContext = new IrrigNetViewModel();
    }
}

IrrigNetViewModel.cs

[AddINotifyPropertyChangedInterface]
public class IrrigNetViewModel : PopupPage
{
    public ICommand TabTappedCommand { get; }
    public ICommand HideListOnTapCommand { get; }
    public ICommand ShowIrrigNetDetailPageCommand { get; }

    public IrrigNetViewModel()
    {
        TabTappedCommand = new Command((tabName) => OnTapClicked(tabName.ToString()));
        HideListOnTapCommand = new Command(HideListOnTap);
        ShowIrrigNetDetailPageCommand = new Command(ShowDetailPage);

    private void ShowDetailPage()
    {
        Navigation.PushPopupAsync(new IrrigNetDetailsPage());
    }

    private void HideListOnTap()
    {
        IsListVisible = !IsListVisible;
    }

    private void OnTapClicked(string tabName)
    {

        if (tabName == "location")
        {
....

Так что я сделал все то же самое для TabTappedCommand и HideListOnTapCommand, что и для ShowIrrigNetDetailPageCommand, но по какой-то причине ничего не происходит, когда я нажимаю на TapGestureRecognizer. Я пытался отладить, но я не получаю никаких исключений или ошибок ... Просто ничего не произошло ...

Я установил Rg.Plugins.Popup, потому что IrrigNetDetailsPage.xaml равен <pages:PopupPage mlns:pages="clr-namespace:Rg.Plugins.Popup.Pages;assembly=Rg.Plugins.Popup"> ...

IrrigNetDetailsPage.xaml.cs

public partial class IrrigNetDetailsPage : PopupPage
{
    public IrrigNetDetailsPage ()
    {
        InitializeComponent ();
        BindingContext = new IrrigNetDetailsViewModel();
    }
}

IrrigNetPage.xaml привязка (которая не работает)

<Frame.GestureRecognizers>
    <TapGestureRecognizer Command="{Binding ShowIrrigNetDetailPageCommand}"/>
</Frame.GestureRecognizers>

Итак, я сделал все так же, как для TabTappedCommand и HideListOnTapCommand, но очевидно, что что-то упустил ...

1 Ответ

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

Когда вы перемещаетесь по методу, он должен быть асинхронным.Итак, ваш метод будет выглядеть так:

private async void ShowDetailPage()
    {
        Navigation.PushPopupAsync(new IrrigNetDetailsPage());
    }
...