为什么在使用UWP时Grid的TapGesture识别器响应速度慢,但在Android和iOS上工作正常?

问题描述 投票:1回答:1

我有一个按钮和一个网格。按钮绑定到ExecuteButtonCommand,而TapGestureRecognizer for Grid绑定到ExecuteGridCommand。现在,如果我快速按下按钮,相应的标签将显示所有平台的正确点击计数,即命令代码正在执行点击发生的次数。

但是在Grid的情况下,尽管对于android和iOS来说,它工作得很好。但是对于UWP,并不是所有的单击都在执行命令。例如:如果我快速点击网格6次,那么相应的标签仅显示3或4个计数,这意味着执行手势命令的次数比实际执行的次数要少。

这是我的ViewModel中拥有的

<StackLayout HorizontalOptions="Center" VerticalOptions="Center">
        <!-- Place new controls here -->
        <Label Text="{Binding ButtonExecutionCount}" HorizontalOptions="Center"/>
        <Button x:Name="ClickButton" Text="ExecuteClick"  HorizontalOptions="Center"
                    Command="{Binding ExecuteButtonCommand}"
                />
        <Label Text="{Binding GridExecutionCount}" HorizontalOptions="Center"/>
        <Grid BackgroundColor="Aquamarine" VerticalOptions="Center" HorizontalOptions="Center">
            <Grid.RowDefinitions>
                <RowDefinition Height="*"/>
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*"/>
            </Grid.ColumnDefinitions>
            <Label Text="Click this grid" Grid.Column="0" Grid.Row="0" HorizontalOptions="Center"/>
            <Grid.GestureRecognizers>
                <TapGestureRecognizer Command="{Binding ExecuteGridCommand}"></TapGestureRecognizer>
            </Grid.GestureRecognizers>
        </Grid>
    </StackLayout>

这是绑定视图模型的代码,该代码记录并显示点击计数:

public class MainPageViewModel : INotifyPropertyChanged
    {
        public MainPageViewModel()
        {
            ExecuteGridCommand = new Command(ExecuteGridMethod);
            ExecuteButtonCommand = new Command(ExecuteButtonMethod);
        }

        private int _gridExecutionCount;
        public int GridExecutionCount
        {
            get => _gridExecutionCount;
            set
            {
                _gridExecutionCount = value;
                OnPropertyChanged();
            }
        }

        private int _buttonExecutionCount;
        public int ButtonExecutionCount
        {
            get => _buttonExecutionCount;
            set
            {
                _buttonExecutionCount = value;
                OnPropertyChanged();
            }
        }

        public Command ExecuteGridCommand { get; set; }

        public Command ExecuteButtonCommand { get; set; }


        public event PropertyChangedEventHandler PropertyChanged;
        public void OnPropertyChanged([CallerMemberName] string name = "")
        {
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
        }

        public void ExecuteGridMethod()
        {
            GridExecutionCount++;
        }

        public void ExecuteButtonMethod()
        {
            ButtonExecutionCount++;
        }
    }

在这里,我两次都喜欢,并且按钮数量很好,但是对于UWP中的网格,实际点击次数要少。

enter image description here

c# xaml xamarin xamarin.forms xamarin.uwp
1个回答
0
投票

通过命令单击标签/网格时,我也遇到相同的错误。我创建了一个网格作为自定义按钮,用于显示可单击的项目,在iOs和Android中一切正常,但是在UWP的情况下,如果我随机舔一下,并非所有单击都在进行/注册。与上述问题类似。@Lucas尝试随机单击。

© www.soinside.com 2019 - 2024. All rights reserved.