У меня есть кнопка и сетка. Кнопка привязана к ExecuteButtonCommand, а TapGestureRecognizer для Grid привязана к ExecuteGridCommand. Теперь, если я нажимаю кнопку быстро и быстро, соответствующая метка показывает правильное количество кликов для всех платформ, то есть код команды выполняется столько раз, сколько раз произошло нажатие.
Но в случае сетки, хотя для 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>
И вот код привязки ViewModel, который записывает и отображает количество кликов:
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++;
}
}
Здесь я нажал и 5 раз, и кнопку count - это нормально, но для сетки в UWP это меньше, чем фактических кликов.
введите описание изображения здесь